gpt4 book ai didi

rx-java - 为在 Vert.X 中运行的 RxJava 设置 Hystrix 崩溃的请求上下文

转载 作者:行者123 更新时间:2023-12-04 19:35:25 24 4
gpt4 key购买 nike

我想使用 Hystrix (1.5.12) 与在 Vert.X (3.3.3) 中运行的 RxJava (1.3.3) 合并。我遇到的问题是没有为请求缓存键的线程设置 Hystrix 请求上下文。

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

创建 HystrixObservableCollapser 实现并在创建的折叠器上调用 toObservable() 的类,在某个 Vert.X 事件循环线程上被调用。

对上面返回的可观察对象的订阅,可能在也可能不在折叠器创建线程上。这个订阅线程不同于请求进入的线程和创建 Hystrix 请求上下文的线程。所以没有为订阅线程设置Hystrix请求上下文。

我已阅读 HystrixRequestContext in case of async requests和其他问题,我已经尝试了一些 RxJava 和 Hystrix 钩子(Hook),但它们似乎都不起作用:

  • RxJavaHooks#setOnScheduleAction
  • HystrixConcurrencyStrategy#wrapCallable
  • 使用 HystrixContextSchedulerRxJavaHooks#setOnComputationScheduler(以及其他 2 个调度程序 Hook )中包装 RxJava 调度程序。

当我在传递给折叠器返回的可观察对象的 doOnSubscribe(...) 的 lambda 中设置 Hystrix 请求上下文时,以下 Hook 开始起作用:

  • RxJavaHooks#setOnScheduleAction
  • RxJavaHooks#setOnComputationScheduler 中包装 RxJava 调度程序(以及其他 2 个调度程序 Hook )。

正在折叠器返回的可观察对象的 doOnSubscribe(...) 中为当前线程设置 Hystrix 请求上下文,并使用上面 2 个 Hook 中的 1 个,设置Hystrix 请求上下文?

如果是这样,哪种钩子(Hook)是首选方法?

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

最佳答案

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

我正在使用 RxJava 调度程序 Hook ,结合 doOnSubscribe(...) 对折叠器返回的可观察对象。

关于rx-java - 为在 Vert.X 中运行的 RxJava 设置 Hystrix 崩溃的请求上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48856109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com