В чем разница между методами отправки и публикации EventBus в Vertx?
У меня был первый контакт с EventBus Vertx, и я понял, что есть два способа отправить сообщение. Использовал метод отправки или публикации. Я спрашиваю: какова практическая разница между использованием этих двух методов и в каком сценарии они используют каждый?
1 ответ
Решение
Обе send
а также publish
используются для отправки сообщения на адрес шины событий. Однако между ними есть некоторые различия.
Используя publish
:
- Сообщение отправлено одному или нескольким слушателям
- Все обработчики, прослушивающие адрес, будут уведомлены
- От обработчиков ответа не ожидается
Используя send
:
- Сообщение отправляется одному и только одному обработчику, зарегистрированному на адрес шины событий.
- Если зарегистрировано несколько обработчиков, только один будет уведомлен. Приемник будет выбран "алгоритмом циклического перебора" согласно документам.
- Получатель может ответить на сообщение, этот ответ может быть пустым или содержать тело ответа. Время ожидания ответа также может быть указано.
В практическом использовании, publish
весьма полезно сообщить, что событие произошло, тогда как send
Это очень удобно для того, чтобы спросить о лечении, когда ответ имеет значение.
Концептуально, publish
использует шаблон публикации / подписки, тогда как send
использует шаблон запроса / ответа.