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