我是Azure Service Bus的新手,正在研究它是否可以代替我们的RabbitMQ基础结构。
无论如何,我想知道使用Queue是否有意义?如果“主题”和“订阅”提供相同的功能,并且提供了从多个来源独立消费的灵活性。
例如,如果现在我的设置中只有一个消费者组(可能是多个消费者,但是所有人共享相同的消息队列),那么我可以使用具有单个订阅的主题。
队列有什么意义?它是否提供了对主题和订阅的某种优化?
答案 0 :(得分:1)
与订阅订阅的主题不同,队列不必经过过滤。附件大吞吐量可以转化为一些性能优势。同样,对于接收方是单个处理器且目标位置已知的情况,将消息发送到队列而不是将消息发送到主题是一种更简单的语义。 NServiceBus和MassTransit之类的框架会根据命令或事件的使用情况来区分和优化消息发送,并相应地使用队列或主题/事件。
答案 1 :(得分:0)
使用主题而不是队列的主要优点是,我们可以在服务主题内创建多个主题订阅。因此,发送给该主题的消息将被发送到所有主题订阅,当有多个侦听器从单个来源监听消息时,这种情况将非常明显。
另一个主要优点是,我们可以为每个主题订阅创建主题订阅规则或过滤器,以过滤该主题订阅接收的消息。所有主题订阅都将具有默认的主题订阅规则,该规则允许该主题订阅接收发送到该主题的所有消息。