Я строю реактивный конвейер, подобный этому, на netty-сервере с помощью Spring Web-Flux:
someService.getSettings(key) //Mono<Settings>
.filter(Settings::isEnabled)
.switchIfEmpty(Mono.error(
new Exception("Setting is disabled.")
)).then(/*Mono representing API fetch*/ someApi.fetch(param));
Насколько я понимаю, всякий раз, когда Settings::isEnabled
возвращает false, конвейер будет пустым, и я буду получить моно, представляющее ошибку. Однако такого поведения не происходит. Мой someApi.fetch(param)
вызов всегда срабатывает без завершения фильтра Mono. Таким образом, даже если Settings::isEnabled
равно false или true, someApi.fetch(param)
всегда запускается без завершения Mono.filter
.
Как мне убедиться, что выдается ошибка, если фильтр возвращает пустое значение Mono и происходит только выборочный вызов когда я проверил, что настройка не отключена?