【发布时间】:2019-11-12 22:27:18
【问题描述】:
如何使用反应堆通量对以下场景进行建模?
+-------+ +-------+ +-------+
| | | | -----> | |
| A | ----> | B | -----> | C |
| | | | -----> | |
+-------+ +-------+ +-------+
A 生成由B 接收的项目,该项目将从该项目发出[0..N] 由C 接收的项目。
如何编写 Flux 以便 B 可以根据 A 发出的项目发出新项目?
A a = ...
B b = ...
C c = ...
Flux.push((emitter) -> a.run(emitter))
.howToMapOneEelementToMany((emitter, item) -> b.handle(emitter, item); // ???
.doOnNext((item) -> c.handle(item))
.subscribe();
编辑:示例
-
A生成 Excel 文件的路径 -
B读取 Excel 文件并每行生成一个项目(可以是很多行或没有) -
C将每一行存储在数据库中
【问题讨论】:
-
也许 .thanMany?
-
@sfiss 很有趣,如何在不知道将创建多少新项目的情况下使用它,例如它可以与
Flux.push或类似的一起使用吗? -
您的要求并不清楚,因为您的代码示例与您要求的并不真正匹配。你写了
produces an item per row,但是你写了howToGenerateManyItemsFromOneItem -
我认为这篇博文会给你你需要的答案simonbasle.github.io/2017/10/file-reading-in-reactor
标签: java spring spring-boot project-reactor reactor