首页 > 解决方案 > Spring Reactor:如何压缩两个 Flux,但有顺序?

问题描述

假设我有两个外部服务。假设我们有一个 itemFoo并且 serviceA 返回 itemA而 serviceB 返回 item B

我想得到的是表单的处理程序,(A a, B b)其中ab是同一查询项的相应对象。

Flux::zip是迄今为止我发现的最接近的东西,但这并不是我想要的,因为没有承诺订单。我正在寻找类似CompletableFuture::allOf的东西

我总是可以通过使这两个调用同步来作弊,但这剥夺了反应式编程的所有乐趣。或者,我可以管理一些缓存并仅在这两个项目到达时发出记录,但我更喜欢无状态的东西。

标签: javareactive-programmingproject-reactor

解决方案


如果您使用Flux.flatMap(f1)orFlux.flatMap(f2)之前或zip操作期间,请检查这些flatMap是否正在执行其他异步方法,例如 API 端点调用。在这种情况下,您可能需要在转换后替换它们Flux.flatMapSequential(f1)Flux.flatMapSequential(f2)保持flux元素的顺序。


推荐阅读