Ribbon在服務調用方使用
常用注解及范例:(服務調用方)
主類中:
@Bean
@LoadBalanced //在RestTemplate上加入負載均衡注解
public RestTemplate restTemplate(){
return new RestTemplate();
}
服務調用代碼:
@GetMapping("{id}")
public User queryById(@PathVariable("id") Long id){
String url = "http://user-server/user/"+id; //此處直接寫服務ID即可
User user = restTemplate.getForObject(url, User.class);
return user;
}
原理:
ribbon會攔截RestTemplate之后取出"user-server"字符串,以"user-server"作為服務ID找eureka獲取服務實例,之后自動進行拼接(即自動拼接地址及端口),並使用拼接后的url重新發送請求
因此@LoadBalanced注解必須加在RestTemplate類上
ribbon配置:
ribbon.ReadTimeout=1000 //處理請求的超時時間,默認為1秒
ribbon.ConnectTimeout=1000
ribbon.MaxAutoRetries=1
ribbon.MaxAutoRetriesNextServer=0
通常配置ribbon.ReadTimeout和ribbon.ConnectTimeout即可(注意和hystrix超時時長配合的問題,詳解可參看我的另一篇《openFeign常用注解及超時時間規則詳解》)