我正在使用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
)Promise
和Observable
)当执行上面的代码时,它是否首先创建Promise
(在阻塞线程池上),将其转换为observable(仍然在阻塞线程池上执行),将其包装在Hystrix命令中(在Hystrix线程池上执行,包含在Observable
中(在非阻塞线程池上执行),包装在Promise
中(仍然在非阻塞线程池上执行)。是吗?
另外,如何调整各个线程池的大小?与Ratpack相比,Hystrix是否需要一定的尺寸?
谢谢!