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