Rebus订户 - 发布者系统。仅由单个订户

时间:2016-04-19 10:23:44

标签: message-queue publish-subscribe rebus

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

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

1 个答案:

答案 0 :(得分:0)

  
    

但有些消息只能由单个订阅者处理

  

然后你不应该使用bus.Publish作为特定的消息类型 -​​ 有一种机制可以将消息发送给一个特定的接收者你应该使用它 - 你可以通过

来实现
  1. 将消息类型映射到端点
  2. "发送"消息而不是"发布"它
  3. 你这样做(1):

    Configure.With(...)
        .(...)
        .Routing(r => {
            r.TypeBased()
                .Map<YourMessage>("the_recipient");
        })
        .Start();
    

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

    你这样做(2):

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

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

    我希望这对您有所帮助:)