我有一个发布者有多个订阅者的系统。但有些消息只能由单个用户处理。在我的情况下,发布者发送有关更改数据库中数据的消息,所有订阅者都可以访问同一个数据库,但我不需要它们都更改相同的数据。 如何使用rebus实现这一目标?
PS。忘了提。我不能只与一个订阅者订阅该消息,因为订阅者可以一直在线/离线。
答案 0 :(得分:0)
但有些消息只能由单个订阅者处理
然后你不应该使用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会将消息发送给消息的自然所有者。
我希望这对您有所帮助:)