我正在寻找一种方法来确保某些功能有条件地针对流运行。基本上,对于每个updateMessage,我都希望始终运行processType1,并且仅根据updateMessage中是否存在字段来运行processType2和/或processType3。我目前的立场是:
public Mono<List<Leaderboard>> processUpdate(UpdateMessage updateMessage) {
return processType1(updateMessage)
.flatMap(event -> {
if (updateMessage.getId1() != null) {
return processType2(updateMessage);
}
return Mono.empty();
})
.flatMap(event -> {
if (updateMessage.getId2() != null) {
return processType3(updateMessage);
}
return Mono.empty();
});
}
我不要空的Monos,但是如果删除它们,它会抱怨我什么也没退。我尝试了doOnNext,但似乎无法返回任何内容。
最佳答案
如果id为null,您是否不能像这样返回最后一个processType结果的Mono:
return processType1(updateMessage)
.flatMap(event -> {
if (updateMessage.getId1() != null) {
return processType2(updateMessage);
}
return Mono.just(event);
}).flatMap(event -> {
if (updateMessage.getId2() != null) {
return processType3(updateMessage);
}
return Mono.just(event);
});
关于java - Java Rx Reactor:条件doOnNext,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60642385/