Java 8 Ratpack、RxJava、Hystrix和Blocking-线程池和边界
我正在使用Java 8 Ratpack、RxJava、Hystrix和Blocking-线程池和边界,java-8,rx-java,nonblocking,hystrix,ratpack,Java 8,Rx Java,Nonblocking,Hystrix,Ratpack,我正在使用ratpack,与ratpack hystrix一起使用,并具有类似以下内容: return RxRatpack.promiseSingle( new HystrixObservableCommand<List<VersionedArtifactMetadata>>( HystrixObservableCommand.Setter.withGroupKey(GROUP_KEY).andCommandKey( Hystr
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());
));
返回RxRatpack.promisesSingle(
新的HystrixObservableCommand(
HystrixObservableCommand.Setter.withGroupKey(GROUP_KEY)和CommandKey(
HystrixCommandKey.Factory.asKey(“搜索”)){
@凌驾
受保护的可观察构造(){
返回RxRatpack。观察(
阻塞。获取(()->{
返回httpClient.request(…);
}
}
}.toObservable());
));
执行情况如何?我假设,考虑到Promise
和observeable
之间的集成,它们无缝地共享同一个非阻塞线程池?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
- HTTP连接池
Promise
(在阻塞线程池上),将其转换为一个可观察的(仍在阻塞线程池上执行),将其包装在一个Hystrix命令(在Hystrix线程池上执行),包装在一个可观察的
(在非阻塞线程池上执行)中,包装在承诺中(仍在非阻塞线程池上执行)。是这样吗
另外,如何根据线程池之间的关系调整线程池的大小?与Ratpack相比,Hystrix one是否需要一定尺寸
谢谢