Прием команды и получение событий от сервиса - PullRequest
0 голосов
/ 28 августа 2018

Использование Rebus в качестве шины сообщений через брокер сообщений RabbitMq для обеспечения управляемой событиями связи между микроуслугами. При использовании bus.Send (команда) служба A отправляет команду через определенную очередь, на которую подписана служба B. мы используем маршрутизацию на основе типов.

Служба B во время рабочего потока команды должна отправлять события для изменения статуса (выполняющий А, выполняемый А и т. Д.). Один из обработчиков события будет находиться только в службе B (допустим, он будет прослушивать определенное событие и вызывать другой API).

Для этого нужно ли иметь 3 экземпляра ребуса в сервисе B? Один для подписки на команду из службы A, а другой для вызова событий и третий для обработки события?

1 Ответ

0 голосов
/ 28 августа 2018

мне нужно иметь 3 экземпляра ребуса в сервисе B? Один для подписки на команду из службы A, а другой для вызова событий и третий для обработки события?

Нет, вам нужен только один экземпляр Rebus для обслуживания B.

Одной конечной точки Rebus (с одной входной очередью) достаточно для:

... получить команду (вы уже знаете, что ?)

... подписаться на событие (например, await bus.Subscribe<YourEvent>();)

... опубликовать событие (например, await bus.Publish(new YourEvent(...);)

... получить событие (потому что вы подписались на него, создавая привязку из темы, названной по вашему типу YourEvent, к входной очереди службы B.

...