我正在使用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());
));
执行是什么样子的?我假设,考虑到它们之间的集成Promise
,Observable
它们无缝地共享相同的非阻塞线程池?Hystrix 如何与所述线程池集成?
当我说鉴于上述情况我有以下情况时,这是我的理解是否正确:
- 用于管理非阻塞工作的线程池(适用于
Promise
和Observable
) - 一个 Hystrix 线程池
- 用于管理阻塞工作的线程池(适用于
Promise
和Observable
) - HTTP 连接池
执行上面的代码时,它是否首先创建一个Promise
(在阻塞线程池上),将其转换为可观察对象(仍在阻塞线程池上执行),将其包装在 Hystrix 命令中(在 Hystrix 线程池上执行),包裹在一个Observable
(在非阻塞线程池上执行),包裹在一个Promise
(仍然在非阻塞线程池上执行)。那正确吗?
另外,如何调整各种线程池的大小?与 Ratpack 相比,Hystrix 是否需要一定的尺寸?
谢谢!