@RestController
public class ClientController {
@Autowired
private LoadBalancerClient loadBalancerClient;
// @Autowired
// private RestTemplate template;
@GetMapping("/msg")
public String msg() {
// 方式一(写死url,部署的ip未知,负载均衡时,访问服务器未知)
// RestTemplate restTemplate = new RestTemplate();
// String response = restTemplate.getForObject("http://localhost:8080/product/getMsg", String.class);
// 方式二:使用loadBalancerClient动态拼接url
ServiceInstance serviceInstance = loadBalancerClient.choose("product");
String host = serviceInstance.getHost();
int port = serviceInstance.getPort();
String url = String.format("http://%s:%s", host,port) + "/product/getMsg";
RestTemplate template = new RestTemplate();
String response = template.getForObject(url, String.class);
//方式三:采用配置类方式(使用@LoadBalanced)http://product=》http://serviceId
// String response = template.getForObject("http://product/product/getMsg", String.class);
System.out.println(response);
return response;
}
}
--------------------------------------------------
@Configuration
public class RestTemplateConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
}