Asynchronous RxJava连接池

Asynchronous RxJava连接池,asynchronous,connection-pooling,rx-java,Asynchronous,Connection Pooling,Rx Java,上下文:我想将模块分解为子模块。每个人都有责任感。分解之后,我想组合/编排每个子模块提供的服务,以构建聚合对象 我当前的解决方案:该组合使用了RxJava。首先我加载ObjectA列表,然后在flatMap中异步调用(使用defer和Schedulers.io)多个服务,最后在flatMap中使用zip操作符构建新对象 objectsA.flatMap { Observable<A> oa = loadAAsync(); Observable<B> ob =

上下文:我想将模块分解为子模块。每个人都有责任感。分解之后,我想组合/编排每个子模块提供的服务,以构建聚合对象

我当前的解决方案:该组合使用了RxJava。首先我加载ObjectA列表,然后在flatMap中异步调用(使用defer和Schedulers.io)多个服务,最后在flatMap中使用zip操作符构建新对象

objectsA.flatMap {
   Observable<A> oa = loadAAsync();
   Observable<B> ob = loadBAsync();
   Observable<C> oc = loadCAsync();
   return Observable.zip(oa, ob, oc, (a, b, c) -> { build() };
}
objectsA.flatMap{
可以看出我在我的项目上做了尝试

*更新3*:将我的池大小配置为50。当我监视Hikari MBean时,我看到在短时间内

  • ActiveConnections=50(因此使用所有连接)
  • IdleConnections=0
  • ThreadsAwaitingConnection:我看到的最大值是210

请纠正我:)

我不确定你说的对,但是如果每个loadXAsync调用都请求db,那么很明显,它会比使用连接发出1个SQL请求慢得多。这与连接池大小有什么关系?你在
loadXAsync
中到底在做什么?从RxJava非阻塞样式w获得的小的额外速度我会被额外的DB调用完全否定。想想发送和检索SQL查询所需的工作量吧——它是巨大的.RxJava(或任何其他异步/非阻塞框架)永远也无法弥补。谢谢你的意见。目前正在评估这种服务集成。在Netflix reactiveLab的例子中,我看到了一些非常相似的东西(personnalizedCatalog、目录、评论、评论),所有这些都是使用RxJava和Hystrix聚合的。他们也受到了惩罚(通过http进行网络调用),我认为他们的数据来自数据库。当我在没有网络调用的情况下不幸从本地存储检索数据时,他们怎么能做到这一点呢(@Archange实际上rxjava默认是单线程的,所以如果你在
loadAAsync
中没有做什么特别的事情,它会一个接一个地执行。查看更多信息