微服務springcloud—Feign使用Hystrix和為Feign添加回退
阿新 • • 發佈:2018-11-07
Feign使用Hystrix
前文中使用註解@HystrixCommand的fallbackMethod屬性實現回退的。然而,Feign是以介面形式工作的,他沒有方法體,前文講解的方式顯然不適合Feign。
那麼Feign要如何整合Hystrix呢?不僅如此,如何實現Feign的回退呢?
事實上,Spring Cloud預設已為Feign整合了Hystrix,只要Hystrix在專案的classpath
中,Feign預設就會斷路器包裹所有方法。下面來詳細探討如何實現Feign的回退。
為Feign添加回退
1.複製專案microservice-consumer-movie-feign,將ArtifactId修改為microservice-consumer-movie-feign-hystrix-fallback。
2.將之前編寫的Feign介面修改成如下內容
/**
* Feign的fallback測試
* 使用@FeignClient的fallback屬性指定回退類
*/
@FeignClient(name="users", fallback = FeignClientFallback.class)
public interface UserFeignClient {
@RequestMapping(value ="/{id}",method = RequestMethod.GET)
public User findById(@PathVariable("id") Long id) ;
}
/**
* 回退類FeignClientFallback需事先Feign Client介面
* FeignClientFallback也可以是public class,沒有區別
*/
@Component
class FeignClientFallback implements UserFeignClient {
@Override
public User findById(Long id){
User user = new User();
user.setId(-1L);
user.setUsername("預設使用者" );
return user;
}
}
3.測試
1.啟動microservice-discovery-eureka。
2.啟動microservice-provider-user。
3.啟動microservice-consumer-movie-feign-hystrix-fallback。
4.訪問http://localhost:8010/user/1,可正常獲得結果。
5.停止microservice-provider-user。
6.再次訪問http://localhost:8010/user/1,可獲得如下結果。說明當使用者微服務不可用時,進入回退的邏輯。
本文大部分內容轉載自周立的《Spring Cloud與Docker微服務架構實戰》