Контекст
Мое приложение микро-сервисов основано на spring-cloud
: шлюз zuul
настроен перед двумя микро-сервисами: service-a и service-b .
Один из моих API требует, чтобы service-a запросы service-b ;Для этого я использую feign
.
Zuul отправляет X-FORWARDED-*
заголовки сервисам, чтобы они правильно переписывали ссылки HATEOAS (когда сервисы настроены с ForwardedHeaderFilter
).
Моя проблема в том, что сервисы взаимодействуют друг с другом, используя Feign
, что зависит от Hystrix
.Hystrix
создает новый поток для каждого запроса (мы не используем конфигурацию SEMAPHORE), поэтому запрос в RequestContextHolder
Spring теряется в запросе Feign от service-a до service-b , я не могу больше обогатить запрос feign
перехватчиком feign
, так как исходный запрос потерян.
Некоторые потенциальные решения
Теперь токен авторизации пересылкиподдерживается напрямую Spring с параметром hystrix.shareSecurityContext: true
Конфигурация "из коробки" отсутствует, чтобы Hystrix разделял запрос между потоками.
Решением может быть реализовать мой собственный HystrixConcurrencyStrategy
, который является классом из netflix.hystrix.Моя последняя находка - это Запрос Pull , который был отправлен Spring-cloud-netflix, но, к сожалению, не интегрирован.
Я могу попытаться скопировать код запроса Pull и создатьбин, так же, как то, что написал "eacdy":
@Bean
public RequestAttributeHystrixConcurrencyStrategy hystrixRequestAutoConfiguration() {
return new RequestAttributeHystrixConcurrencyStrategy();
}
Есть ли более простое решение для перенаправления заголовков из Zuul
с Hystrix
?
Я предполагаю, что то, что я пытаюсьЭто очень стандартно при использовании микро-сервисов Zuul
, Hystrix
и HATEOAS
, которые взаимодействуют друг с другом, так что, может быть, что-то уже существует (и что я не смог найти)?
Спасибо!