RestTemplate ---模块间的通信

1.第一种方式(直接使用RestTemplate ,和url的纯路径获取不同模块的服务)

RestTemplate restTemplate = new RestTemplate();

String result = restTemplate.getForObject("http://xx", String.class);

缺点,太死板。不能灵活在各个模块间切换

2.第二种方式(通过LoadBalancerClient获取应用名,然后根据应用名获取url,最后根据restTemplate通过url和返回值获得信息) RestTemplate restTemplate = new RestTemplate();

 ServiceInstance serviceInstance = loadBalancerClient.choose("ORDER");
String url = String.format("http://%s:%s", serviceInstance.getHost(), serviceInstance.getPort()+"/get/msg");
String result = restTemplate.getForObject(url,String.class);
return result;

3.
第三种方式(利用注解@loadBalanced,可在restTemplate里使用应用名字 )这其中使用了负载均衡(随机,轮询。。。)
先把RestTemplate注入Bean容器然后
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
 
String result = restTemplate.getForObject("http://ORDER/get/msg",String.class);


ribbon的负载均衡
 

猜你喜欢

转载自www.cnblogs.com/JTrun/p/11108365.html
今日推荐