Один из способов публикации в ребус?
Читая раздел " Передача работы " в вики, кажется, что вы можете сделать одностороннюю публикацию в rebus с односторонним режимом. Но я думал, что односторонний режим позволяет только bus.send?
Если в сценарии, где у меня есть два приложения, оба могут опубликовать сообщение SomethingHappened, но только одно из приложений должно обработать ответ от ProcessManager, например DoSomethingElse, как мне настроить rebus для обоих приложений?
С уважением
Инь
1 ответ
Но я думал, что односторонний режим позволяет только bus.send?
Ничто не помешает вам сделать bus.Publish
от одностороннего клиента, если он имеет правильно настроенное хранилище подписки. И если что-то еще заполняет это хранилище подписок некоторыми подписками (например, вы, вставляя их вручную в БД или с помощью другого обработчика подписчика подписываться / отписываться), тогда что-то может действительно произойти, когда вы публикуете;)
Как мне настроить ребус для обоих приложений?
Не имея абсолютно четкого представления о вашем сценарии, я думаю, что
- один издатель, A, имеет входную очередь:
publisherA
- другой издатель, B, не имеет входной очереди (т.е. это односторонний клиент)
- два издателя совместно используют свое хранилище подписки (например, таблицу в SQL Server)
- два издателя публикуют сообщения от сборки
StuffToPublish
- другие конечные точки имеют отображение конечных точек, которое отображает
StuffToPublish
вpublisherA
- следовательно,bus.Subscribe
с типом события отStuffToPublish
заставит издателя А установить подписку - опубликованные сообщения от A и B будут отправлены одним и тем же подписчикам, поскольку они совместно используют свое хранилище подписки
Если вы хотите, чтобы издатель A обрабатывал ответы, даже если событие было опубликовано издателем B, вы можете заставить B предоставить rebus-return-address
заголовок (который в противном случае был бы установлен автоматически, если бы B имел очередь ввода) примерно так:
bus.AttacheHeader(someEvent, Headers.ReturnAddress, "publisherA");
Таким образом, ответы будут отправлены publisherA
входная очередь.