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一直無法發現服務,需要檢查其調用服務的名稱是否採用了下劃線。需要修改下劃線爲中劃線