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

Accepting command and raising events from a service

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

命令工作流程中的服务 B 需要发出状态变化事件(performingA、performedA 等)。事件的处理程序之一将仅在服务 B 中(据说它将侦听特定事件并调用另一个 api)。

要实现这个,我需要在服务 B 中有 3 个 rebus 实例吗?一个用于订阅来自服务 A 的命令,另一个用于引发事件,第三个用于处理事件?

do I need to have 3 instances of rebus in service B? One for subscribing to command from service A and another for raising events and 3rd to handle the event?

不,您只需要服务 B 中的一个 Rebus 实例。

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

...接收命令(你已经知道了)

...订阅活动(例如 await bus.Subscribe<YourEvent>();

...发布活动(例如await bus.Publish(new YourEvent(...);

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