На основе кластера Eureka Server с использованием Spring RestTemplate в сочетании с функцией Ribbon для вызова службы использование очень простое.
1. Создайте новый модуль в основном проекте, eurekaclient, maven dependency,
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
2. Файл конфигурации application.yml,
spring:
application:
name: eurekaclient
server:
port: 8080
shutdown: graceful
eureka:
client:
service-url:
defaultZone: http://peer1:8761/eureka/
3. Определите RestTemplate в классе запуска и поддержите Ribbon, чтобы включить балансировку нагрузки с помощью аннотации Spring Cloud @LoadBalanced.
@LoadBalanced
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
4. Разработайте интерфейс в службе logservice для вызова службы eurekaclient,
@RestController
@RequestMapping("log")
public class LogController {
@GetMapping("logInfo")
public String logInfo(String logInfo) {
System.out.println(logInfo);
return logInfo;
}
}
5. Определите класс Service в eurekaclient, добавьте его в контейнер с помощью аннотации @Component и используйте restTemplate для вызова службы logservice.
@Component
public class LogServiceClient {
@Autowired
private RestTemplate restTemplate;
public String logInfo(String logInfo) {
return restTemplate.getForObject("http://logservice/log/logInfo?logInfo="+logInfo, String.class);
}
}
Определите интерфейс в eurekaclient, вызовите метод logInfo класса Service на шаге 5,
@RestController
@RequestMapping("client")
public class TestController {
@Autowired
private LogServiceClient logServiceClient;
@GetMapping("getClientInfo")
public String getClientInfo() {
String info = "log info";
return logServiceClient.logInfo(info);
}
}
6. Введите адрес интерфейса, указанный в eurekaclient в браузере, http: // localhost: 8080 / client / getClientInfo.
7. Также очень удобно тестировать балансировку нагрузки ленты, нужно только запустить несколько экземпляров logservice.