2015-04-16 3 views
2

Возможно ли иметь двух издателей для одного и того же типа сообщения и нескольких подписчиков, подписывающихся на тот, который им нужен? Если да, то как я могу его достичь?Два pubslisher для того же типа сообщений в Rebus

+0

Я пытался с двумя издателями и выглядел, даже если я запускаю издатель 1 и пытаюсь опубликовать то, что он не публикует. Но для издателя 2 он корректно публикует сообщения в своей очереди ввода. В чем может быть проблема? –

ответ

1

Обычно вы должны моделировать свою систему, чтобы одна конкретная конечная точка «владела» любым типом события и, следовательно, была бы опубликована.

Однако ничто не мешает вам публиковать одни и те же типы событий из нескольких конечных точек, но я бы посоветовал, что они разделяют хранилище подписки в этом случае - например. в SQL Server (хорошо работает также с версиями Express).

Таким образом, клиенту просто необходимо сопоставить тип события с любой произвольной конечной точкой из тех, которые способны его опубликовать, так что, когда они bus.Subscribe<SomeEvent>(), все издатели получат этого подписчика, когда они bus.Publish(new SomeEvent { ... }).

+0

Спасибо за ответ. Основная проблема заключается в том, что мы хотим иметь определенных подписчиков, которые должны подписываться только на некоторых издателей, а не на всех. В идеале в описанном выше сценарии они получат сообщение от других издателей. –

+0

С помощью определенных типов событий «одна конкретная конечная точка» вы имеете в виду приложения/модули? Или может ли несколько приложений публиковать один и тот же тип события в одной и той же конечной точке/очереди, которую нужно выбрать одним потребительским приложением? –

+0

У вас может быть столько издателей, сколько хотите, если вы разделите хранилище подписки. С Rebus 2 (версии> = 0.90.0) вы даже можете настроить некоторые из хранилищ подписки, которые будут централизованы, что устраняет всю концепцию владения сообщениями из pub/sub messaging – mookid8000

Смежные вопросы