提问关于WebFlux中的多表关联信息问题

webflux版本是2.7.3

需求详细描述:

分页+条件+排序查询主表A

主表A查询出来的数据再通过分N个批次去补充信息

补充信息就是将小批次的主表A的Id作为副表B、C、D等的in条件查询

最后通过两个小批次通过id相互关联形成一个VO模型

 

针对上述需求写的伪代码:

Flux<AVo> voFlux = r2dbcEntityTemplate.select(query,A.class)
.buffer(N)
.flatMap(buff -> {
Mono.just(buff)
.map(this::buildAVo)
.zipWhen((aList)-> findBByAIds(aList),this::fixB)
.zipWhen((aList)-> findCByAIds(aList),this::fixC)
.flux()
.flatMap(Flux::fromIterable)
});

问题:

  1. 使用zipWhen会等待上一个流结束才开始,也就是上述代码查询副表C的时候需要等待B查询完,有什么办法可以使两个同时进行?
  2. 首先这个查询是支持排序的,但当bufferN之后,(0-N,N-2N,2N-3N….) 每个段 段内是顺序的,但重新组合起来就不顺序了,因为是异步去补充信息的,有些段消费的快就先排进去了,有什么办法可以让最终结果是顺序的?
请登录后发表评论

    没有回复内容