SpringCloud学习之整合RestTemplate和Ribbon

it2024-12-06  13

SpringCloud学习之整合RestTemplate和Ribbon服务调用

Service-Consumer添加Ribbon依赖修改Service-Consumer的RestTemplateConfig修改Service-Consumer的UserService 单独使用RestTemplate调用微服务时,需要明确微服务的IP和服务端口,无法实现Feign使用微服务名称进行调用服务的功能。Ribbon可以实现负载均衡的功能,可以通过微服务名称分配一个可用的服务给RestTemplate调用。因此整合RestTemplate和Ribbon后也可以实现以微服务名称调用服务的功能。整合直接在 SpringCloud学习之RestTemplate和 SpringCloud学习之Feign服务调用的基础上进行修改。

Service-Consumer添加Ribbon依赖

<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-ribbon --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> <version>1.4.0.RELEASE</version> </dependency>

修改Service-Consumer的RestTemplateConfig

@LoadBalanced:该注解可以实现Ribbon和RestTemplate的结合,实现负载均衡的功能

@Bean @LoadBalanced public RestTemplate restTemplate(){ builder.setConnectTimeout(20*1000) .setReadTimeout(60*1000); return builder.build(); }

修改Service-Consumer的UserService

return restTemplate.getForObject("http://localhost:8082/user/selectAll",String.class);换为return restTemplate.getForObject("http://service-provider/user/selectAll",String.class);实现了通过微服务名称调用服务

public String selectAll(){ //return restTemplate.getForObject("http://localhost:8082/user/selectAll",String.class); return restTemplate.getForObject("http://service-provider/user/selectAll",String.class); }

微服务调用返回结果不变

最新回复(0)