1、restTempate调用服务三种方式
@RequestMapping("/getProductMsg")
public String getProductMsg(){
//第一种方式 直接restTemplate,url写死
//RestTemplate restTemplate = new RestTemplate();
//String response = restTemplate.getForObject("http://localhost:8766/getProductMsg", String.class);
//第二种方式(利用loadBalancerClient通过应用名获取url,然后再使用restTemplate)
RestTemplate restTemplate = new RestTemplate();
ServiceInstance serviceInstance = loadBalancerClient.choose("PRODUCT");
String url= String.format("http://%s:%s",serviceInstance.getHost(),serviceInstance.getPort())+"/getProductMsg";
String response = restTemplate.getForObject(url, String.class);
//第三种方式(日用@LoadBalanced,可在restTemplate中使用应用名)
//String response = restTemplate.getForObject("http://PRODUCT/getProductMsg", String.class);
log.info("response={}",response);
return response;
}
1.1第三种方式的restTempate
@Component
public class RestTemplateConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
说明:第一种写死,未实现负载均衡,第二种、第三种均实现负载均衡。