具有多个侦听器的天蓝色服务总线队列/具有队列的竞争消费者

azure service bus queue with multiple listeners / competing consumers with queue

从理论上讲,Azure 服务总线队列在消息和接收方方面似乎是一对一的。 只是想知道一个队列是否可以有多个听众。

如果是1:1,是不是说要实现竞争消费者模式就不能用队列,只有topics了?

队列和主题之间有很大的区别:对于队列,每条消息都被只有一个消费者接收。对于一个主题,每个订阅该主题的消费者 都会收到每条消息(尽管还有过滤空间...)。如果您的场景要求每条消息仅由一个消费者处理,请使用队列。如果所有已注册的进程都需要处理它,请使用主题。

可以对一个队列设置多个侦听器。假设我们有进程 A 和进程 B,它们都在监听队列。一条消息进来,进程 A 接收它。如果有另一条消息进来而进程 A 还没有完成,进程 B 将接收该消息。如果进程 A 准备就绪,则其中任何一个进程都可以接收第二条消息。

有关竞争消费者的更多信息,请查看 Azure 架构中心上的 Competing Consumers 文章,其中包含(参考)示例代码。