hystrix全局降級(邏輯層面,解決方法膨脹)

controller層調用的service接口,用了@FeignClient註解,FeignClient是服務調用,把客戶端與服務器端注入eureka,來調用我們的服務器端的接口,fallback的是繼承HystrixService 類爲其設計的fallback處理邏輯,避免代碼耦合

調用接口異常返回:
邏輯方法返回單獨處理
yml(消費者):

server:
  port: 80
eureka:
  client:
    register-with-eureka: false #表示是否將自己註冊進Eurekaserver默認爲true。
    fetch-registry: true #是否M從Eurekaserver抓取已有的註冊信息,默認爲true。單節點無所謂,集羣必須設置爲true才能配合ribbon使用負載均衡
    service-url:
      defaultZone: http://localhost:7001/eureka
feign:
  hystrix:
    enabled: true

service接口(openfegin):

@FeignClient(value = "CLOUD-PROVEIDER-USER", fallbackFactory = UserServiceFallbackFactory.class)
@Component
public interface UserService {
    @GetMapping("/selectId/{id}")
    String selectId(@PathVariable("id") Long id);
}

service實現類(openfegin):

@Component
public class UserServiceFallbackFactory implements FallbackFactory<UserService> {
    @Override
    public UserService create(Throwable throwable) {
        return (id) -> "hystrx 斷路成功";
    }
}

總結:

  • @FeignClient(value = “CLOUD-PROVEIDER-USER”, fallbackFactory = UserServiceFallbackFactory.class)
  • @Component**

綜合總結:

  1. 控制類HystirxController上DefaultProperties註解默認fallback
  2. 控制層執行方法SingleHystirxController上HystrixCommand註解單獨設置的fallback
  3. 調用service方法@FeignClient(fallback = FallbackService .class)

fallback優先顯示:
運行時異常 < 超時 < 宕機

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章