从理论上讲,相对于消息和接收者,蔚蓝服务总线队列看起来是一对一的。 只是想知道队列中是否可以有多个侦听器。
如果为1:1,是否意味着要实现竞争性的消费者模式,我们就不能使用队列,而主题是唯一的选择吗?
答案 0 :(得分:6)
队列和主题之间有很大的区别:在队列中,每封邮件仅由 1个使用者接收。有了主题,订阅该主题的每个消费者都会收到每条消息(尽管仍有过滤的余地...)。如果您的方案要求每条消息仅由一个使用者处理,请使用队列。如果所有已注册的流程都需要处理,请使用主题。
您可以拥有多个队列监听器。假设我们有同时监听队列的流程A和流程B。出现一条消息,进程A进行处理。如果收到另一条消息,而进程A尚未完成,则进程B将接听该消息。如果进程A准备就绪,则任一进程都可以接收第二条消息。
有关竞争消费者的更多信息,请查看Azure体系结构中心上的Competing Consumers文章,其中包含(参考)示例代码。