我刚刚开始使用 Windows Azure 服务总线(主题和队列),我正在尝试实现竞争消费者消息传递模式。
本质上,我想要一组消息Producers和一组消息Consumers。生成消息后,我希望第一个可用的消费者处理消息。其他消费者不应收到该消息。
有没有办法在 Azure 中做到这一点?
我刚刚开始使用 Windows Azure 服务总线(主题和队列),我正在尝试实现竞争消费者消息传递模式。
本质上,我想要一组消息Producers和一组消息Consumers。生成消息后,我希望第一个可用的消费者处理消息。其他消费者不应收到该消息。
有没有办法在 Azure 中做到这一点?
简单的。只需让两个(或更多)接收器同时从一个队列接收,你就完成了。任何检索到的消息都会恰好到达这些接收者之一,因为消息日志上的光标在接收消息时会前进。竞争消费者是网络队列的固有能力,因此实际上没有什么特别需要的。
如果您需要相反的情况 - 每条消息都发送给每个消费者 - 您可以为每个消费者创建一个订阅选项,这为您提供了一个独立于消息日志的游标,该游标可以独立于其他接收者移动。对于踢球,您显然也可以在订阅中拥有竞争消费者。
克莱门斯
你可能不想要 Topics ,而是Brokered Messaging。
您可以通过使用消息的标签和/或内容类型属性以及PeekLock接收模式来模拟代理消息传递中的类似主题的功能。
主题是代理消息传递的一个功能,但它是一种一对多的“发布/订阅”模式。队列是一对一的消息通信。所以是的,听起来你应该简单地使用队列。另请参阅http://msdn.microsoft.com/en-us/library/hh689723(VS.103).aspx。