使用 Rebus 作为 RabbitMq 消息代理上的消息总线,以实现微服务之间的事件驱动通信。 使用总线。发送(命令(服务 A 通过服务 B 已订阅的特定队列发送命令。我们使用基于类型的路由。
命令工作流中的服务 B 需要发出状态更改事件(执行 A、执行 A 等(。事件的一个处理程序将仅在服务 B 中(据说它将侦听特定事件并调用另一个 api(。
要实现此目的,我是否需要在服务 B 中有 3 个 rebus 实例?一个用于订阅来自服务 A 的命令,另一个用于引发事件,第三个用于处理事件?
服务 B 中有 3 个 rebus 实例吗?一个用于订阅来自服务 A 的命令,另一个用于引发事件,第三个用于处理事件?
不,😃您只需要服务 B 中的一个 Rebus 实例。
一个 Rebus 端点(具有一个输入队列(足以:
。接收命令(您已经知道😊(
。订阅事件(例如await bus.Subscribe<YourEvent>();
(
。发布事件(例如await bus.Publish(new YourEvent(...);
(
。接收事件(因为你订阅了它,从以YourEvent
类型命名的主题创建绑定到服务 B 的输入队列。