#java #spring #project-reactor
#java #spring #проект-реактор
Вопрос:
У меня есть служба REST, написанная на Java с использованием Spring и связанных библиотек, включая Reactor, использующая Mono для переноса дорогостоящих операций.
Я рефакторирую связанный с DB код с помощью обычных методов CRUD. Я сталкивался с примерами с возвращаемым типом Mono<Void>
, который, на мой взгляд, имел бы смысл для методов, в которых человек заботится только об успехе или неудаче. Для моего варианта использования такие вещи, как обновление или особенно удаление записи базы данных.
На самом деле я сталкивался со всевозможными трудностями при попытке использовать Mono<Void>
, что стало для меня проблемой, когда у меня была область, где у меня было два метода, которые можно было выполнять параллельно, один из которых возвращал Mono<Void>
, и когда я начал использовать Mono.zip
для объединения результатов, которые не сработали. И я не смог найти никакого метода для их объединения, поддержания параллелизма и использования Mono<Void>
. Что действительно работает, так это сопоставление Mono<Void>
с чем-то вроде Mono<Boolean>
с фиктивным Boolean.TRUE
.
Итак, на данный момент мне интересно, какова наилучшая практика, когда метод не имеет реального возвращаемого типа, просто укажите успех или ошибку. Должен ли я пытаться использовать Mono<Void>
с некоторыми методами, которых мне не хватает, или просто использовать фиктивный тип, такой как Mono<Boolean>
?
Комментарии:
1. Ваш вопрос, по сути, «как мне использовать Mono<Void> и заархивировать результаты?», так почему вы не спросили об этом и не показали пример? Я подозреваю, что вы уже знаете ответ на этот вопрос. Ключ в слове «фиктивный». Если вам нужно использовать какой-то фиктивный тип, вы, вероятно, где-то ошиблись.
2. Если вам нужно только сообщить о завершении или ошибке,
Mono<Void>
это подходящий тип.Mono<Boolean>
это сбило бы с толку любого, кто пытается прочитать код.