Я использую реактивный драйвер MongoDB для Java. У меня есть DAO, где я запрашиваю БД, используя цепочку функций find().first()
, которая возвращает Publisher<Document>
. Мне нужно вызвать subscribe()
(иначе запрос фактически не будет выполнен) в этом экземпляре Publisher
, где я делаю некоторые сравнения в обратных вызовах onNext(Document)
и onError(Throwable)
. Согласно моей логике, я должен возвращать некоторые значения из моей функции, но оба этих метода обратного вызова являются пустыми.
Я могу создать уродливую логику, в которой я блокирую внутри обратного вызова и устанавливаю свое возвращаемое значение как значение AtomicReference
, которое я объявляю вне обратных вызовов, а затем возвращаю значение в AtomicReference
. Но при этом я блокирую, а блокировать - это то, что я не хочу делать.
Как мы можем запросить значения, сравнить результат и затем вернуть наш собственный вид результата на основе сравнения (все от DAO до Контроллера) реактивным способом?
Если шаблон проектирования, который существует для выполнения операций такого типа, что это такое?
Я использую Micronaut в качестве веб-фреймворка.