Как дождаться, когда все моно из списка будут завершены (не имеет значения успешно или нет)

У меня такой код:

List<Mono> monoList = foo();
//await when all Monos are finished
try {
    Flux.fromIterable(monoList)
            .flatMap(Function.identity())
            .then()
            .block();

} catch (Exception e) {
    log.warn("error", e);
}

Он отлично работает, когда все MONO завершены успешно, но не работает, если хотя бы один Mono завершился с ошибкой. Методblockвыбрасывает исключения и прерывает все остальные моно. Таким образом, этот код ожидает, когда все моно завершатся успешно или когда произойдет первая ошибка.

Как дождаться, когда все Моно из monoList закончены (неважно успешно или нет)

1 ответ

Это работает:

  try {
        Flux.fromIterable(monoList)
                .flatMap(Function.identity())
                .then()
                .onErrorContinue((throwable, o) -> {
                    //just ignore it we've already caught all errors
                })
                .block();

    } catch (Exception e) {
        log.warn("Polling finished with exceptions", e);
    }
Другие вопросы по тегам