Как дождаться, когда все моно из списка будут завершены (не имеет значения успешно или нет)
У меня такой код:
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);
}