如果Hystrix在classpath下,默認情況下將包括Feign與斷路器的所有方法。返回一個com.netflix.hystrix.HystrixCommand去使用,允許你使用反應模式(調用.toObservable或.observe()或異步使用(.queue()))。要禁用Feign的Hystrix支持,設置feign.hystrix.enable=false。
需要JAVA Spring Cloud大型企業分佈式微服務雲構建的B2B2C電子商務平臺源碼:壹零叄八柒柒肆六二六
要在每個客戶端上禁用Hystrix支持,創建一個Feign.Builder並將scope設置爲“prototype”,例如:
@Configuration
public class FooConfiguration {
@Bean
@Scope("prototype")
public Feign.Builder feignBuilder() {
return Feign.builder();
}
}
Feign Hystrix Fallbacks (失敗回退)
Hystrix支持失敗回退的概念,當線路有錯誤是則執行默認代碼路徑,啓用回退要給@FeignClient設置fallback屬性來實現回退的類名。
編寫一個實現類,實現Client接口
@Component
public class MenuClientFallback implements MenuClient {
@Override
public ResponseResult saveOrUpdateMenu(MenuModel menuModel) {
System.out.println("調用服務失敗");
return new ResponseResult("-1", "調用服務失敗");
}
}
@FeignClient註解加上fallback屬性,fallback屬性的值就是實現類.class
@FeignClient(name = "WishfulCloud-Authority-Service", fallback=MenuClientFallback.class)
public interface MenuClient {
@RequestMapping(value = "/menu/saveOrUpdateMenu", method = RequestMethod.POST)
public ResponseResult saveOrUpdateMenu(@RequestBody MenuModel menuModel);
}
fallbackFactory
如果需要訪問導致回退觸發的原因,可以在@FeginClient中使用fallbackFactory屬性