java - Spring Reactor:如何压缩两个 Flux,但有顺序?
问题描述
假设我有两个外部服务。假设我们有一个 itemFoo
并且 serviceA 返回 itemA
而 serviceB 返回 item B
。
我想得到的是表单的处理程序,(A a, B b)
其中a
和b
是同一查询项的相应对象。
Flux::zip
是迄今为止我发现的最接近的东西,但这并不是我想要的,因为没有承诺订单。我正在寻找类似CompletableFuture::allOf的东西
我总是可以通过使这两个调用同步来作弊,但这剥夺了反应式编程的所有乐趣。或者,我可以管理一些缓存并仅在这两个项目到达时发出记录,但我更喜欢无状态的东西。
解决方案
如果您使用Flux.flatMap(f1)
orFlux.flatMap(f2)
之前或zip
操作期间,请检查这些flatMap
是否正在执行其他异步方法,例如 API 端点调用。在这种情况下,您可能需要在转换后替换它们Flux.flatMapSequential(f1)
或Flux.flatMapSequential(f2)
保持flux
元素的顺序。
推荐阅读
- java - 为什么约束集不起作用我也链接了它们?
- deployment - gcloud 使用任意名称在 cloudbuild 中部署应用程序
- python - 如何在 Heroku 上创建 Flow 对象-凭据
- mysql - 在 MySQL 中添加行值并创建新列
- algorithm - 间隔调度
- java - 完整性检查:为什么在 x 和 x+1 处使用 Graphics.drawLine 绘制的垂直线之间存在间隙?
- amazon-web-services - 白名单 gitlab webhook
- php - AWS ec2 中的 Cron 作业,但无法正常工作
- create-react-app - 如何从 Firebase 托管中取消部署 React Web 应用程序
- mvvm - 具有复杂 MVVM 的 SwiftUI(存储库 + 嵌套 ObservedObject)