Как я могу использовать переборку в feignClient? - PullRequest
0 голосов
/ 04 апреля 2019

1 、 Можно ли использовать шаблон переборки в feignClient?

2 、 У меня некоторая путаница с Хистриксом.


Например, , если у меня есть только три симулированных клиента «a», «b», «c»。 «a» вызывает «b» и «c».
Я знаю, что могу легко использовать автоматический выключатель с параметром fallback и некоторой конфигурацией, подобной этой:

@FeignClient(name = "b", fallback = bFallback.class)
protected interface HystrixClient {
  //some methods
}

@FeignClient(name = "c", fallback = cFallback.class)
protected interface HystrixClient {
  //some methods
}

По-другому, я мог бы использовать @HystrixCommand, чтобы обернуть мой удаленный вызов такой конфигурацией, как эта:

@HystrixCommand(fallbackMethod="getFallback") 
    public Object get(@PathVariable("id") long id) {
     //...
    }

Кроме того, я могу настроить некоторый параметр в @HystrixCommand или application.yml, , и я также могу добавить threadPoolKey в @HystrixCommand


Q1 : Я узнал, что Hystrix обернул удаленный вызов для достижения цели , Я могу понять второй способ ,, но первый способ любит оборачивать вызываемого абонента?

Я нашел в документе, что:

Feign обернет все методы с разрывом цепи

Значит ли это, что FeignClient добавляет @Hystrixcommand к каждому методу в интерфейсе?

Q2 : Если клиент Feign "b" имеет три удаленных вызова, как я могу позволить им запускаться в переборке, чтобы избежать одного метода, потребляющего весь поток? для объединения feignClien t и @HystrixCommand ? будут ли они конфликтовать?
Потому что я не нашел параметр любит threadPoolKey в feignClient. Авто переборка?

Q3 : Если моя конфигурация Hystrix находится в application.yml, шаблон feignClient и шаблон @HytirxCommand имеют один и тот же шаблон конфигурации?, например:

hystrix:
 command:
 default:
    execution:
      isolation: 
        thread:
          timeoutInMilliseconds:1000
    circuitBreaker:
      requestVolumeThreshold:10
...
...

а каков следующий тайм-аут?

feign:
  client:
    config:
      feignName:
        connectTimeout: 5000
        readTimeout: 5000
...