我需要一种方法来向未知数量的订阅者发布消息。消息应该是持久/持久的,并分为三个优先级(高,中和低)。其中一个订户只能处理有限的负载,而一些消息则更重要。首先处理高优先级的消息等。
如何使用Rebus做到这一点?我想每个用户需要三个队列?
在哪里可以找到具有持久队列和MSMQ的发布/订阅示例?
答案 0 :(得分:2)
首先,一些信息:Rebus喜欢使用持久的队列,持久的消息传递和有保证的传递。事实上,除非你积极做出选择退出的事情,否则这就是一切正常的方式。因此,如果您设法使用Rebus进行pub / sub工作,那么它是持久的:)
按定义发布使用“未知数量的订阅者” - 至少这是一个公共汽车问题,而不是应用程序问题。
实际上,订阅者通过发出SubscriptionMessage
(可以被视为订阅请求)来发起发布/订阅对话,然后发布者发布一些事件(可以看作是“订阅回复“)。发布者的“公共汽车部分”记录了订阅任何给定事件类型的人。
到目前为止,非常好。
关于优先事项,Rebus没有现成的方法来实现这一目标。正如您所建议的那样,确保某些消息类型的最大延迟的一种方法是创建单独的端点,其输入队列不会被低优先级消息阻塞。
但是有一些关于如何配置Rebus的内容强烈建议在每个进程中只有一个单独的输入队列,这可能意味着你应该创建订阅那些高优先级消息类型的单独进程。
我知道MSMQ在消息上支持某种优先级,所以我想{em>可以 支持让MsmqMessageQueue
理解某些标题(类似于快递和时间的方式)被接受的实施 - 见here) - 拉动请求被高兴地接受并强烈鼓励:)