Mono.flatMap не вызывается - PullRequest
       8

Mono.flatMap не вызывается

0 голосов
/ 30 ноября 2018

Я все еще новичок в Spring Webflux, и flatMap на Mono, похоже, не работает.У меня есть следующая функция и вызов kafkaPublisher.publishToTopic не работает.Я вставил оператор print, чтобы проверить, печатает ли он что-либо и даже не выполняет оператор print. publishToTopic возвращает Mono<Void>.

private Mono<Void> test(Long gId, UUID pId) {
    Mono<UUID> nId = pDao.findNId(pId);
    Mono<List<String>> channels = nId.flatMapMany(pDao::findChannels).collectList();
    return Mono.zip(nId, channels)
           .flatMap(t -> {
               System.out.println(t.getT1());
               return kafkaPublisher.publishToTopic(gId, t.getT1().toString(), t.getT2());
           });

}

Он вызывается, если flatMap вызывается *1012*, как показано ниже.

private Mono<Void> test(Long gId, UUID pId) {
    Mono<UUID> nId = pDao.findNId(pId);
    Mono<List<String>> channels = nId.flatMapMany(pDao::findChannels).collectList();
    Mono.zip(nId, channels)
           .flatMap(t -> {
               System.out.println(t.getT1());
               return kafkaPublisher.publishToTopic(gId, t.getT1().toString(), t.getT2());
           }).block();
    return Mono.empty();

}

1 Ответ

0 голосов
/ 13 декабря 2018

Я нашел свою ошибку.Я не использовал результат test нигде в функции, где я вызывал этот test метод.Вот код, который я использовал для вызова test

public Mono<Void> saveNew(NewPre pre) {
    preDao.insert(pre)
                        .flatMap(p -> test(p.pId(), p.nId()));
    return Mono.empty();
}

Я изменил его на следующий, и он работает.

public Mono<Void> saveNew(NewPre pre) {
    return preDao.insert(preference)
                        .flatMap(p -> test(p.p(), p.n())
                            .then(Mono.empty()));
}
...