Ratpack,RxJava,Hystrix和Blocking - 线程池和边界

时间:2017-06-30 09:09:37

标签: java-8 rx-java nonblocking hystrix ratpack

我正在使用ratpackratpack-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(在阻塞线程池上),将其转换为observable(仍然在阻塞线程池上执行),将其包装在Hystrix命令中(在Hystrix线程池上执行,包含在Observable中(在非阻塞线程池上执行),包装在Promise中(仍然在非阻塞线程池上执行)。是吗?

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

谢谢!

0 个答案:

没有答案