У меня есть сценарий, в котором я получу список сущностей из DB
, используя
repository.getAllByIds(ids)
, который вернет Flux<Entity>
, если поток тогда пустмне нужно позвонить handleAllEntitiesNotFound()
иначе мне нужно позвонить handleNotFoundEntities()
repository.getAllByIds(ids)
.buffer()
.switchIfEmpty(__ -> handleAllEntitiesNotFound(ids, erroneousEntities))
.flatMap(list -> handleNotFoundEntities(list))
private Flux<Entity> handleAllEntitiesNotFound(List<String> ids, List<ResponseError> erroneousEntities) {
Flux.fromIterable(ids).subscribe(id -> erroneousEntities.add(new ResponseError("Not Found", "Not Found", id)));
return Flux.empty();
}
Я использую buffer()
, чтобы собрать список в Flux<List<Entity>>
Проблема в том, когдая вызываю службу, она останавливается, нет ответа, нет журналов, ничего нет, если я удалил строку .switchIfEmpty(__ -> handleAllEntitiesNotFound(ids, erroneousEntities))
, она работает и возвращает ответ, но без обработки handleAllEntitiesNotFound
В чем может быть проблема при использовании buffer()
с switchIfEmpty()