【发布时间】:2016-08-11 11:12:43
【问题描述】:
我有一个发布者多个订阅者的系统。但有些消息只能由单个订阅者处理。在我的情况下,发布者发送有关更改数据库中数据的消息,所有订阅者都可以访问同一个数据库,但我不需要他们都更改相同的数据。 如何使用 rebus 实现这一点?
附言。忘了提。我不能只订阅一个订阅者的消息,因为订阅者可以一直在线/离线。
【问题讨论】:
标签: message-queue publish-subscribe rebus
我有一个发布者多个订阅者的系统。但有些消息只能由单个订阅者处理。在我的情况下,发布者发送有关更改数据库中数据的消息,所有订阅者都可以访问同一个数据库,但我不需要他们都更改相同的数据。 如何使用 rebus 实现这一点?
附言。忘了提。我不能只订阅一个订阅者的消息,因为订阅者可以一直在线/离线。
【问题讨论】:
标签: message-queue publish-subscribe rebus
但有些消息只能由单个订阅者处理
那么您不应该将bus.Publish 用于该特定消息类型 - 有一种机制可以将消息发送给一个特定的收件人,您应该使用该机制 - 您可以通过
你这样做 (1) 像这样:
Configure.With(...)
.(...)
.Routing(r => {
r.TypeBased()
.Map<YourMessage>("the_recipient");
})
.Start();
因此告诉 Rebus 从队列the_recipient 获取消息的人是YourMessage 类型消息的所有者,并且应该被视为该类型隐式路由消息的自然接收者。
你这样做 (2) 像这样:
await bus.Send(new YourMessage(...));
然后 Rebus 会将消息发送给消息的自然所有者。
我希望这对你有用:)
【讨论】:
the_recipient队列名称吗?