Текущая версия: 0.3.5
Artemis-RPC — это лёгкий RPC-фреймворк, основанный на Netty, который использует Kryo для сериализации и десериализации данных, а Zookeeper — в качестве центра регистрации.
См. модуль artemis-demo-api.
public interface DemoService {
Demo loadDemo (String id );
}
Необходимо хранить RPC-интерфейс и его реализацию в разных модулях.
См. модуль artemis-demo-provider.
<!-- RPC Common API -->
<dependency>
<groupId>kim.artemis</groupId>
<artifactId>artemis-demo-api</artifactId>
<version>${artemis.version}</version>
</dependency>
<!-- RPC Core -->
<dependency>
<groupId>kim.artemis</groupId>
<artifactId>artemis-core</artifactId>
<version>${artemis.version}</version>
</dependency>
@Slf4j
@ArtemisRpcService
public class DemoServiceImpl implements DemoService {
@Override
public String demo(String str) {
log.info(">>>>>>> Вызов успешен");
return str.concat(" Вызов успешен");
}
}
@Configuration
public class ArtemisConfiguration {
private String address = "127.0.0.1:2181";
@Bean
public ArtemisRpcServerFactory artemisRpcServerFactory () {
ArtemisRpcServerFactory artemisRpcServerFactory = new ArtemisRpcServerFactory();
artemisRpcServerFactory.setRegistry("Zookeeper");
artemisRpcServerFactory.setAddress(address);
artemisRpcServerFactory.setPort(19427);
return artemisRpcServerFactory;
}
}
@SpringBootApplication
public class ArtemisDemoProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ArtemisDemoProviderApplication.class, args);
}
}
Сначала запустите Zookeeper. Затем запустите класс ArtemisDemoProviderApplication, чтобы опубликовать RPC-сервис и зарегистрировать его в Zookeeper.
См. модуль artemis-demo-consumer.
<!-- RPC Common API -->
<dependency>
<groupId>kim.artemis</groupId>
<artifactId>artemis-demo-api</artifactId>
<version>${artemis.version}</version>
</dependency>
<!-- RPC Core -->
<dependency>
<groupId>kim.artemis</groupId>
<artifactId>artemis-core</artifactId>
<version>${artemis.version}</version>
</dependency>
@Configuration
public class ArtemisConfiguration {
private String address = "192.168.0.102:2181";
@Bean
public ArtemisRpcClientFactory artemisRpcClientFactory () {
ArtemisRpcClientFactory artemisRpcClientFactory = new ArtemisRpcClientFactory();
artemisRpcClientFactory.setRegistry("Zookeeper");
artemisRpcClientFactory.setAddress(address);
return artemisRpcClientFactory;
}
}
@RestController
public class DemoController {
@ArtemisRpcReference()
DemoService demoService;
@GetMapping("/demo")
public String demo (String id) {
long startTime = System.currentTimeMillis();
Demo demo = demoService.loadDemo(id);
long endTime = System.currentTimeMillis();
long timeLong = endTime - startTime;
double timeDouble= Double.parseDouble(Long.toString(timeLong));
log.info("Время выполнения метода: " + timeDouble+ " миллисекунд, или " + timeDouble/(double)1000 + " секунд");
log.info("demo: " +demo.toString());
return demo.toString();
}
}
@SpringBootApplication
public class ArtemisDemoConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ArtemisDemoConsumerApplication.class, args);
}
}
Запустите класс ArtemisDemoConsumerApplication, чтобы получить ответ от сервиса через Zookeeper и установить соединение с сервером при первом запросе.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )