//第一种方式(直接new调用url接口,)
RestTemplate restTemplate = new RestTemplate();
String msg = restTemplate.getForObject("http://localhost:9081/getMsg",String.class);
//第二种(通过注册服务的名字来查找ip、port)
RestTemplate restTemplate = new RestTemplate();
ServiceInstance serviceInstance = loadBalancerClient.choose("CLIENT");//CLIENT是注册的服务名
String url = String.format("http://%s:%s/",serviceInstance.getHost(),serviceInstance.getPort()) +"getMsg";
String msg = restTemplate.getForObject(url,String.class);
//第三种使用注解@LoadBalanced
首先配置RestTemplate bean加上注解@LoadBalanced
@Component
public class Configeration {
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
在controller中注入RestTemplate
@Autowired
private RestTemplate restTemplate;
String msg = restTemplate.getForObject("http://CLIENT/getMsg",String.class);//CLIENT是服务名字
注:二三方式中若同一服务下有多个服务实例,默认采取轮询的方式调用,可在配置文件修改