В чем существенные различия между публикацией сообщения с использованием Bus.Publish и отправкой сообщения с использованием Bus.Send? Я ищу, чтобы понять, как они отличаются друг от друга, а также когда я должен использовать один над другим.
Разница между Bus.Publish и Bus.Send в NServiceBus?
Ответ 1
Публикация используется для уведомления нескольких подписчиков о конкретном событии. Конечная точка публикации будет иметь хранилище подписчиков, чтобы определить, куда отправлять сообщения. Обычно отправка используется для выдачи команды конечной точке. Команда сообщает конечной точке что-то сделать и не должна ожидать ответа (хотя иногда вам нужен ответ, и NSB поддерживает это).
Причина, по которой вы не видите адресата для Send(), заключается в том, что вы указываете адресата через конфигурацию. В вашем app.config вы будете сопоставлять типы сообщений (целую сборку или класс) с пунктом назначения. Когда вы это сделаете, вам не обязательно указывать пункт назначения.
Ответ 2
Bus.Publish: используется, когда вы не знаете, куда идет сообщение (от 0 до многих подписчиков).
Bus.Send: при отправке сообщения определенному обработчику (клиент к серверу).
Ответ 3
ususally Context.Publish() предназначен для публикации типа события и контекста .Send() для типа команды