SpringCloud RestTemplate Ribbon服务调用如何实现疑问?
摘要:1.依赖 consul依赖中包含ribbon依赖无需额外引入 2.基于discovery Client形式调用 @RequestMapping("usershowProductMsg"
1.依赖
consul依赖中包含ribbon依赖无需额外引入
2.基于discovery Client形式调用
@RequestMapping("/user/showProductMsg")
public List<ServiceInstance> showProductMsg() {
//discovery Client形式调用
List<ServiceInstance> serviceInstances = discoveryClient.getInstances("productservices");
for (ServiceInstance serviceInstance : serviceInstances) {
System.out.println(serviceInstance.getHost());
System.out.println(serviceInstance.getPort());
}
return serviceInstances;
}
[{"instanceId":"productservices-9001","serviceId":"productservices","host":"DESKTOP-VQE7HEH","port":9001,"secure":false,"metadata":{"secure":"false"},"uri":"http://DESKTOP-VQE7HEH:9001","scheme":null},{"instanceId":"productservices-9003","serviceId":"productservices","host":"DESKTOP-VQE7HEH","port":9003,"secure":false,"metadata":{"secure":"false"},"uri":"http://DESKTOP-VQE7HEH:9003","scheme":null}]
可以获取服务列表,无负载均衡
3.基于loadBalance Client形式调用
@RequestMapping("/user/showProductMsg")
public ServiceInstance showProductMsg() {
//loadBalance Client形式调用
ServiceInstance serviceInstance = loadBalancerClient.choose("productservices");
System.out.println(serviceInstance.getHost());
System.out.println(serviceInstance.getPort());
return serviceInstance;
}
{"serviceId":"productservices","server":{"host":"DESKTOP-VQE7HEH","port":9003,"scheme":null,"id":"DESKTOP-VQE7HEH:9003","zone":"UNKNOWN","readyToServe":true,"metaInfo":{"instanceId":"productservices-9003","appName":"productservices","serverGroup":null,"serviceIdForDiscovery":null},"metadata":{"secure":"false"},"passingChecks":true,"healthService":{"node":{"id":"95a5f00e-4d61-c010-c997-5c30e5cbc400","node":"DESKTOP-VQE7HEH","address":"127.0.0.1","datacenter":"dc1","taggedAddresses":{"lan":"127.0.0.1","lan_ipv4":"127.0.0.1","wan":"127.0.0.1","wan_ipv4":"127.0.0.1"},"meta":{"consul-network-segment":""},"createIndex":10,"modifyIndex":11},"
