我们先看一般的restTemplate来实现服务间的调用
首先,我们先配置好RestTemplate
@Configuration
public class BeanConfiguration {
@Bean
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
然后是编写调用下层服务的代码
@RestController
@RequestMapping("/api")
public class RestTemplateController {
@Autowired
RestTemplate restTemplate;
@GetMapping("/restTemplate")
public String restTemplate(){
return restTemplate.getForObject("http://localhost:8081/api/poducer", String.class);
}
}
在这里,调用的时候写了下层服务的ip和端口号,但是在下层有很多服务集的时候,并且下层服务没有开放一个域名出来,那么调用的时候只能调用其中的某一台服务器
在使用负载均衡配置以后,就可以直接使用下层服务在eureka上的注册的名字来访问
在原来的配置上面加上@LoadBalanced注解
@Configuration
public class BeanConfiguration {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
然后在调用的时候就可以直接使用下层服务的注册名
@RestController
@RequestMapping("/api")
public class RestTemplateController {
@Autowired
RestTemplate restTemplate;
@GetMapping("/restTemplate")
public String restTemplate(){
return restTemplate.getForObject("http://eurekaproducer/api/poducer", String.class);
}
}
从而实现了负载均衡的默认规则调用