设置HyStrix的请求上下文与在Vert.x中运行的RXJAVA崩溃



我想使用在vert.x(3.3.3(中运行的rxjava(1.3.3(折叠的hyStrix(1.5.12(。我遇到的问题是,HyStrix请求上下文未设置为请求缓存键的线程。

我在请求进来时创建一个hystrix请求上下文,并将此上下文作为参数传递给所有创建可观察到的类。

创建HystrixObservableCollapser实现并在创建的倒塌器上调用toObservable()的类,在某些Vert.x事件循环线程中被调用。

上面可观察到的可观察到的订阅可能在折叠式构造线上可能或不在。此订阅线程与请求的线程不同,并创建了Hystrix请求上下文。因此,未为订阅线程设置Hystrix请求上下文。

在异步请求和其他问题的情况下,我已经阅读了HyStrixRequestContext,并且我已经尝试了许多RXJAVA和HYSTRIX挂钩,但它们似乎都没有工作:

  • RxJavaHooks#setOnScheduleAction
  • HystrixConcurrencyStrategy#wrapCallable
  • HystrixContextScheduler将RXJAVA调度程序包装在RxJavaHooks#setOnComputationScheduler(以及其他2个调度程序挂钩(中。

当我在collapser返回的可观察到的 doOnSubscribe(...)中设置hyStrix请求上下文时,事情确实开始适用于以下钩子:

  • RxJavaHooks#setOnScheduleAction
  • 将RXJAVA调度程序包装在RxJavaHooks#setOnComputationScheduler中(以及其他2个调度程序钩(。

是否为倒塌者返回的可观察到的doOnSubscribe(...)中的当前线程设置了Hystrix请求上下文,并使用上面的2个挂钩中的1个设置HyStrix请求上下文的正确方法?

如果是这样,则首选方法是哪个挂钩?

如果没有,如何正确确保为线程设置Hystrix请求上下文?

我没有将其标记为答案,因为我不是100%确定这是正确的方法。但这对我有用。

我正在使用rxjava调度程序挂钩,并结合倒塌者返回的观察处的doOnSubscribe(...)

最新更新