我正在寻找一种方法来确保某些功能有条件地针对流运行。基本上,对于每个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/

10-09 09:23