Я запускаю приложение для загрузки весны и только начинаю интегрировать Hystrix из spring-cloud-netflix. Я использую @HystrixCommand для переноса вызова службы на обслуживание, созданного с помощью фальшивого клиента.Имеет ли Spring значение SecurityContext для потока, выполняющего команду Hystrix
@HystrixCommand(fallbackMethod = "updateThingFallback")
def updateRemoteThing(thingResourceClient: ThingResourceClient, thing: Thing) {
thingResourceClient.updateThing(thing) // Call using feign client
}
Этот клиент feign использует контекст безопасности весов, чтобы добавить заголовки безопасности в запрос, который он делает.
Проблема, с которой я столкнулся, заключается в том, что при выполнении HystrixCommand она запускается в отдельном потоке из пула потоков Hystrix и когда мой код пытается получить доступ к контексту безопасности пружины, он недоступен в новом потоке.
Я доступ к контексту пружинной безопасности, как это:
SecurityContextHolder.getContext().getAuthentication();
Моему вопрос, это весна обеспечивает способ передачи контекста пружины безопасности (и контекст приложения) к нитям Hystrix, которые работают команды Hystrix?
Спасибо , это работает, НО, если я правильно понимаю 'SEMAPHORE' против' THREAD', то место, с которым у меня возникли проблемы, было бы идеальным для THREAD: сетевой вызов удаленный сервис, который в лучшие времена не очень быстрый, и слишком часто полностью бомбит. Поэтому я предполагаю, что мой лучший вариант - немного переработать код, чтобы передать auth как параметр? – demaniak