Nexus — это простой rpc-фреймворк, который реализует основные функции rpc. В настоящее время он требует использования Spring, где Netty используется в качестве фреймворка для связи, а Kryo — как по умолчанию протокол сериализации. Выбор протоколов сериализации, балансировщиков нагрузки и центров регистрации осуществляется через SPI.
pom.xml
;<dependency>
<groupId>com.mao.nexus</groupId>
<artifactId>nexus-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
application.yml
:nexus:
service-name: server-example
port: 1234
registry:
protocol: consul
cluster:
load-balance: random
max-connections: 20
@NexusService
public class TestServiceImpl implements TestService {
@Value("${nexus.port}")
private int port;
private final List<User> userList = new ArrayList<>();
private Random random = new Random();
@PostConstruct
public void init() {
for (int i = 0; i < 10; i++) {
User user = new User("Test" + i, i, random.nextInt(2), port);
userList.add(user);
}
}
@Override
public String doTest(String var) {
return String.format("Received, %s, my response: enough! ~ I am %d", var, port);
}
@Override
public User getUser(String name) {
return userList.stream()
.filter(user -> user.getName().equals(name))
.findAny()
.orElse(null);
}
}
@RestController
public class RpcController {
``` @NexusClient(serviceName = "server-example")
private TestService testService;
@GetMapping("/test/{par}")
public String test2(@PathVariable String par) throws IOException {
Random random = new Random();
long l = random.nextLong();
return testService.doTest(String.valueOf(l));
}
@GetMapping("/test3/{name}")
public User test3(@PathVariable String name) {
return testService.getUser(name);
}
}
Дополнительные примеры можно найти в каталоге nexus-example
.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )