接受命令并从服务引发事件

时间:2018-08-28 12:23:43

标签: rebus rebus-rabbitmq

将Rebus用作RabbitMq消息代理上的消息总线,以启用事件驱动的微服务之间的通信。 使用bus.Send(command)服务A在特定的队列上发送命令,服务B已订阅该队列。我们正在使用基于类型的路由。

在命令工作流期间,服务B需要发出事件以更改状态(执行A,执行A等)。事件的处理程序之一将仅在服务B中(据说它将侦听特定事件并调用另一个api)。

要实现此目的,我是否需要在服务B中拥有3个实例?一个是从服务A订阅命令,另一个是引发事件,第三个是处理事件?

1 个答案:

答案 0 :(得分:0)

  

服务B是否需要3个实例?一个是从服务A订阅命令,另一个是引发事件,第三个是处理事件?

否,服务B中仅需要一个Rebus实例。

一个Rebus端点(带有一个输入队列)足以:

...接收命令(您已经知道)

...订阅事件(例如await bus.Subscribe<YourEvent>();

...发布事件(例如await bus.Publish(new YourEvent(...);

...接收事件(因为您订阅了该事件,因此从以您的YourEvent类型命名的主题创建了一个绑定来服务B的输入队列。