@Autowired
private LoadBalancerClient loadBalancerClient;
@Autowired
// private RestTemplate restTemplate;
/**
* resttemplate 三種調用方法
*
* @return
*/
@RequestMapping
public String Test() {
//resttemplate 三種調用方法
//第一種方式(直接使用restTemplate,url寫死)
// RestTemplate restTemplate = new RestTemplate();
// String response = restTemplate.getForObject("http://localhost:8080/msg", String.class);
//第二種方式(利用loadBalancerClient通過應用獲取url,然後再使用restTemplate)
RestTemplate restTemplate = new RestTemplate();
ServiceInstance serviceInstance = loadBalancerClient.choose("服務名");
String url = String.format("http://%s:%s", serviceInstance.getHost(), serviceInstance.getPort(), "/msg");
String response = restTemplate.getForObject(url, String.class);
//第三種方式(利用@LoadBalanced,可在restTemplate裏使用應用的名字)
//String response = restTemplate.getForObject("http://localhost:8080/msg", String.class);
return response;
}
@Bean
@LoadBalanced
public RestTemplate restTemplate (){
return new RestTemplate();
}
springboot中restTemplate通訊的三種方式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.