Я имею дело с клиентом Cloudfoundry Java для следующего варианта использования:
- Я выполняю запрос, который возвращает
Mono<Void>
- В случае успеха этого
Mono
я хочу выполнить дополнительную операцию, которая возвращает Mono<String>
- Для решения, когда выполнять вторую операцию, я использую
filter
, но, похоже, она не работает
Итак, это выглядит так:
Mono<Void> service = createService();
Mono<String> serviceKey = service.filter( x -> someBoolean)
.map( x -> someKey)
.flatMap(key -> {
Mono<String> key = serviceKey(key);
return key;
});
serviceKey.blockOptional() //returns Empty
Я ожидал бы, что когда service
завершится успешно и операция filter
будет успешной, произойдет второй вызов serviceKey
. Однако с отладчиком я увидел, что код внутри flatMap
никогда не выполняется.
javadoc
для Mono#filter
состояний:
Если значение Mono оценено, проверьте результат и воспроизведите его, если предикат вернет true. В противном случае завершить без значения.
Не уверен, как это понимать ... Вопрос в том, как я могу связать успешные операции, когда первая возвращает Mono<Void>
?
Я просто хочу выполнить второй, если первый успешен, и вернуть пустой Mono
, когда фильтр не работает.