2

我正在使用ratpack, 和ratpack-hystrix, 并具有类似于以下内容:

return RxRatpack.promiseSingle(
    new HystrixObservableCommand<List<VersionedArtifactMetadata>>(
        HystrixObservableCommand.Setter.withGroupKey(GROUP_KEY).andCommandKey(
          HystrixCommandKey.Factory.asKey("search"))) {
            @Override
            protected Observable<List<VersionedArtifactMetadata>> construct() {
              return RxRatpack.observe(
                Blocking.get(() -> {
                  return httpClient.request(...);
                }
            }
          }.toObservable());
    ));

执行是什么样子的?我假设,考虑到它们之间的集成PromiseObservable它们无缝地共享相同的非阻塞线程池?Hystrix 如何与所述线程池集成?

当我说鉴于上述情况我有以下情况时,这是我的理解是否正确:

  • 用于管理非阻塞工作的线程池(适用于PromiseObservable
  • 一个 Hystrix 线程池
  • 用于管理阻塞工作的线程池(适用于PromiseObservable
  • HTTP 连接池

执行上面的代码时,它是否首先创建一个Promise(在阻塞线程池上),将其转换为可观察对象(仍在阻塞线程池上执行),将其包装在 Hystrix 命令中(在 Hystrix 线程池上执行),包裹在一个Observable(在非阻塞线程池上执行),包裹在一个Promise(仍然在非阻塞线程池上执行)。那正确吗?

另外,如何调整各种线程池的大小?与 Ratpack 相比,Hystrix 是否需要一定的尺寸?

谢谢!

4

0 回答 0