关于发布订阅:Rebus 订阅者-发布者系统。仅由单个订阅者处理消息

Rebus subscriber-publisher system. Process message only by single subscriber

我有一个发布者几个订阅者的系统。但有些消息只能由单个订阅者处理。在我的情况下,发布者发送有关更改数据库中数据的消息,所有订阅者都可以访问同一个数据库,但我不需要他们都更改相同的数据。
如何使用 rebus 实现这一点?

PS。忘了提。我不能只订阅一个订阅者的消息,因为订阅者可以一直在线/离线。


But some messages should be processed only by single subscriber

那么您不应该将 bus.Publish 用于该特定消息类型 -?? 有一种机制可以将消息发送到您应该使用的特定收件人 - 您可以通过

  • 将消息类型映射到端点
  • "发送"消息而不是"发布"它
  • 你这样做(1)是这样的:

    1
    2
    3
    4
    5
    6
    7
    Configure.With(...)
        .(...)
        .Routing(r => {
            r.TypeBased()
                .Map<YourMessage>("the_recipient");
        })
        .Start();

    因此告诉 Rebus,从队列 the_recipient 获取消息的人是 YourMessage 类型消息的所有者,应该被视为该类型隐式路由消息的自然接收者。

    你这样做 (2) 像这样:

    1
    await bus.Send(new YourMessage(...));

    然后 Rebus 会将消息发送给消息的自然所有者。

    我希望这对你有用:)