我正在运行一个 spring boot 应用程序,并且刚刚开始从 spring-cloud-netflix 集成 Hystrix。我正在使用 @HystrixCommand 来包装使用 feign 客户端进行的服务到服务调用。
@HystrixCommand(fallbackMethod = "updateThingFallback")
def updateRemoteThing(thingResourceClient: ThingResourceClient, thing: Thing) {
thingResourceClient.updateThing(thing) // Call using feign client
}
这个 feign 客户端使用 spring 安全上下文向它发出的请求添加安全标头。
我遇到的问题是,当执行 HystrixCommand 时,它在 Hystrix 线程池的单独线程中运行,当我的代码尝试访问 spring 安全上下文时,它在新线程上不可用。
我正在像这样访问 spring 安全上下文:
SecurityContextHolder.getContext().getAuthentication();
我的问题是,spring 是否提供了一种将 spring 安全上下文(和应用程序上下文)传递给运行 Hystrix 命令的 Hystrix 线程的方法?