Проект перенесён на GitHub: https://github.com/Daliji/easy-rpc.
Это лёгкий RPC-сервис, который подходит для небольших проектов. Он позволяет вызывать методы на удалённом сервере так же просто, как если бы они были локальными!
Адрес блога и последующих обновлений документации: Блог Да Лицзи.
Если у вас есть вопросы, пожалуйста, отправьте их по адресу:
@MailTo:codelifeliwan@sina.com.
Свяжитесь со мной!
После загрузки запустите примеры в папке samples, чтобы увидеть эффект выполнения.
Чтобы создать сервер, вам потребуется всего несколько строк кода:
public static void startServer() throws Exception {
RPCServer server = new RPCServer();
// Устанавливаем порт, на котором будет слушать сервер
server.getConfiguration().setListeningPort(8900);
// Добавляем bean-компоненты, которые можно выполнить на сервере, и соответствующие классы
server.getConfiguration().addBean("addBean", SampleDoServerClass.class);
// По умолчанию сервер работает в однопоточном режиме, что обеспечивает атомарность выполнения
// Если вы хотите запустить его с использованием многопоточного режима ввода-вывода (многопоточность, высокая эффективность), выполните следующую строку
server.getConfiguration().setThreadType(ThreadType.MULTI);
// Запускаем сервер
server.start();
}
После запуска клиенты могут отправлять запросы на сервер. На разных портах можно создавать разные серверы.
Для создания клиента также требуется всего несколько строк кода:
public static RPCClient getClient() throws Exception {
// Создаём экземпляр клиента и указываем адрес и порт сервера (можно указать несколько, будет автоматически балансировать нагрузку)
RPCClient client = new RPCClient("localhost", 8900);
// Регистрируем методы, которые клиент может выполнять, через интерфейс
client.getConfiguration().addBean(SampleDoClientInterface.class, "addBean");
return client;
}
После получения клиента вы можете вызывать методы:
SampleDoClientInterface bean = client.getBean(SampleDoClientInterface.class);
System.out.println("1 + 2 = " + bean.add(1, 2));
Вам нужно только получить bean, чтобы использовать методы интерфейса для вызова.
Несколько строк кода позволяют завершить запуск сервера и вызов клиента. Вы можете обратиться к примерам в samples:
package com.codelifeliwan.rpc.samples;
import com.codelifeliwan.rpc.client.RPCClient;
import com.codelifeliwan.rpc.samples.models.cient.*;
import com.codelifeliwan.rpc.server.RPCServer;
import java.io.InputStream;
public class Start {
public static void main(String[] args) throws Exception {
startServer();
RPCClient client = getClient();
// Вызов удаленного метода
SampleDoClientInterface bean = client.getBean(SampleDoClientInterface.class);
System.out.println("10 + 20 = " + bean.add(10, 20));
}
/**
* Получение клиента
*
* @throws Exception
*/
public static RPCClient getClient() throws Exception {
InputStream inputStream = Start.class.getClassLoader().getResourceAsStream("easyrpc.yml");
return RPCClient.fromYaml(inputStream);
}
/**
* Запуск сервера
*
* @throws Exception
*/
public static void startServer() throws Exception {
InputStream inputStream = Start.class.getClassLoader().getResourceAsStream("easyrpc.yml");
RPCServer server = RPCServer.fromYaml(inputStream);
server.start();
}
}
# Конфигурация сервера easyrpc
server:
# Порт прослушивания
port: 8912
# Режим потока прослушивания, есть single (однопоточная обработка, выполнение бизнес-логики является атомарным), multi (модель NIO главный-подчиненный, многопоточность, эффективность выше, но пока не реализована)
thread: multi
# Класс сериализации сообщений
serializer: com.codelifeliwan.rpc.core.serializer.DefaultMessageSerializer
# Зарегистрированный класс, формат: bean-name:bean-class, model (singleton/prototype, по умолчанию singleton)
beans:
testBean: com.codelifeliwan.rpc.samples.models.server.SampleDoServerClass
sortBean: com.codelifeliwan.rpc.samples.models.server.SampleDoSort
# Конфигурация клиента easyrpc
client:
# Сервер связи, несколько серверов разделяются запятыми, при наличии нескольких серверов будет автоматически распределять нагрузку (случайное значение hash)
server: localhost:8912
# Класс сериализации сообщений
serializer: com.codelifeliwan.rpc.core.serializer.DefaultMessageSerializer
# Интерфейс, который необходимо создать
beans:
testBean: com.codelifeliwan.rpc.samples.models.client.SampleDoClientInterface
sortBean: com.codelifeliwan.rpc.samples.models.client.SampleSort
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )