Подтвердить что ты не робот

Разница между Bus.Publish и Bus.Send в NServiceBus?

В чем существенные различия между публикацией сообщения с использованием Bus.Publish и отправкой сообщения с использованием Bus.Send? Я ищу, чтобы понять, как они отличаются друг от друга, а также когда я должен использовать один над другим.

4b9b3361

Ответ 1

Публикация используется для уведомления нескольких подписчиков о конкретном событии. Конечная точка публикации будет иметь хранилище подписчиков, чтобы определить, куда отправлять сообщения. Обычно отправка используется для выдачи команды конечной точке. Команда сообщает конечной точке что-то сделать и не должна ожидать ответа (хотя иногда вам нужен ответ, и NSB поддерживает это).

Причина, по которой вы не видите адресата для Send(), заключается в том, что вы указываете адресата через конфигурацию. В вашем app.config вы будете сопоставлять типы сообщений (целую сборку или класс) с пунктом назначения. Когда вы это сделаете, вам не обязательно указывать пункт назначения.

Ответ 2

Bus.Publish: используется, когда вы не знаете, куда идет сообщение (от 0 до многих подписчиков).
Bus.Send: при отправке сообщения определенному обработчику (клиент к серверу).

Ответ 3

ususally Context.Publish() предназначен для публикации типа события и контекста .Send() для типа команды