Слияние кода завершено, страница обновится автоматически
Лёгкий RPC-фреймворк
Лёгкий децентрализованный RPC-фреймворк.
Создайте Maven-проект:
<dependency>
<groupId>vip.justlive</groupId>
<artifactId>supine</artifactId>
<version>${lastVersion}</version>
</dependency>
Или Gradle:
compile 'vip.justlive:supine:$lastVersion'
Сервер: — Прямое подключение:
ServiceConfig config = new ServiceConfig(10086);
ServiceFactory factory = new ServiceFactory(config);
// Регистрация сервиса
factory.register(new SayImpl());
factory.register(new SayImpl2(), "2");
factory.start();
— Multicast-регистрация:
ServiceConfig config = new ServiceConfig(10086);
// Установка типа регистрации
config.setRegistryType(1);
// Настройка адреса регистрации, по умолчанию используется значение 234.69.69.69:56969
config.setRegistryAddress("234.69.69.69:56969");
ServiceFactory factory = new ServiceFactory(config);
// Регистрация сервисов
factory.register(new SayImpl());
// Указание версии сервиса
factory.register(new SayImpl2(), "2");
factory.start();
Клиент: — Прямое подключение:
ClientConfig config = new ClientConfig();
// Настройка времени ожидания при неактивном соединении, по умолчанию 120 секунд
config.setIdleTimeout(120);
// Адрес сервера при прямом подключении
config.setRegistryAddress("localhost:10086");
// Асинхронный вызов, по умолчанию синхронный
config.setAsync(false);
ReferenceFactory factory = new ReferenceFactory(config);
factory.start();
// Создание прокси интерфейса
Say say = factory.create(Say.class);
// Вызов метода интерфейса
String result = say.hello(msg);
— Multicast:
ClientConfig config = new ClientConfig();
// Включение асинхронного вызова
config.setAsync(true);
config.setRegistryType(1);
// Адрес регистрации, по умолчанию — 234.69.69.69:56969
config.setRegistryAddress("234.69.69.69:56969");
ReferenceFactory factory = new ReferenceFactory(config);
factory.start();
// Создание прокси для указанной версии интерфейса
Say say = factory.create(Say.class, "2");
// Вызов метода, обратите внимание на асинхронный режим, возвращаемое значение будет null
say.hello(msg);
// При асинхронном вызове необходимо использовать Future для получения результата
ResultFuture<String> future = ResultFuture.future();
// Обработка успешного выполнения
future.setOnSuccess(System.out::println);
future.setOnFailure(System.out::println);
// Получение результата
future.get();
// Ожидание результата в течение 1 секунды
future.get(1, TimeUnit.SECONDS);
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )