Реактор: используйте Mono или фиктивный тип, такой как Mono

#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> это сбило бы с толку любого, кто пытается прочитать код.