Java 如何在完成时从焊剂中发射

Java 如何在完成时从焊剂中发射,java,spring-webflux,project-reactor,Java,Spring Webflux,Project Reactor,我正在尝试实现类似于Akka Streams statefulMapConcat的东西。。。基本上,我的分数是这样的: 分数(LocalDate,整数分数) 我想吸收这些,每天排放一个总量: ScoreAggregate(LocalDate日期、整数scoreCount、整数totalScore) 所以我有一个聚合器,它保存一些我在处理之前设置的内部状态,我想在这个聚合器上进行平面映射,它返回一个Mono。如果日期改变,聚合器只会发出一个带有值的Mono,因此您每天只能得到一个 ScoreAgg

我正在尝试实现类似于Akka Streams statefulMapConcat的东西。。。基本上,我的分数是这样的:

分数(LocalDate,整数分数)

我想吸收这些,每天排放一个总量:

ScoreAggregate(LocalDate日期、整数scoreCount、整数totalScore)

所以我有一个聚合器,它保存一些我在处理之前设置的内部状态,我想在这个聚合器上进行平面映射,它返回一个Mono。如果日期改变,聚合器只会发出一个带有值的Mono,因此您每天只能得到一个

ScoreAggregator aggregator = ...

Flux<Score> scoreFlux = ...

scoreFlux.flatMap(aggregator::addScore)
ScoreAggregator聚合器=。。。
通量分数通量=。。。
scoreFlux.flatMap(聚合器::addScore)

所以我的问题是。。。当
scoreFlux
完成时,如何发出最后一个元素?聚合器将有一些最后一天尚未发出的数据,我需要发送这些数据。

将评论作为答案进行回应,这样就不会显示为未答复:

所以我的问题是。。。当scoreFlux完成时,如何发出最后一个元素


您只需使用
concatWith()
即可在原始流量完成后连接所需的发布服务器。如果您只希望在原始发布服务器完成时对其进行评估,请确保将其包装在
Mono.defer()
中,这将阻止先发制人的执行。

我可能不完全理解,但您能否在flatmap调用后使用
concatWith()
并添加您想要的其他发布服务器?啊。。。是 啊下面是我正在做的:。concatWith(Flux.defer(aggregator::onComplete))其中onComplete()方法将返回最终aggregateUp的Mono,准确地说-这应该可以工作,因为
defer()
确保它不会提前执行:-)