springboot+eureka+robbin
@Service
public class HelloService {
@Autowired
RestTemplate restTemplate; // 负载均衡ribbon对象
// 熔断错误回调方法
public String helloFallBack(String name){
return "Error occurred!";
}
@Autowired
LoadBalancerClient loadBalancerClient;
/**
* 调用Eureka系统中名都为test-service的ribbon_service_a或ribbon_service_b的方法/hello
* @return
*/
// 注解指定发生错误时的回调方法
@HystrixCommand(fallbackMethod="helloFallBack")
public String helloService(String name) {
// this.loadBalancerClient.choose("CASE_CENTER");
// Get请求调用服务,restTemplate被@LoadBalanced注解标记,Get方法会自动进行负载均衡
// restTemplate会交替调用service_a和service_b
try {
String url="http://CASE-CENTER/hi?name="+name;
System.out.println(url);
return restTemplate.getForObject(url, String.class);
} catch (RestClientException e) {
e.printStackTrace();
throw e;
}
}
}
调用服务总是会返回 HystrixCommand fallbackMethod
如果发现robbin一直无法发现服务,需要检查其调用服务的名称是否采用了下划线。需要修改下划线为中划线