与队列相比,只有一个订阅的天蓝色服务总线主题有哪些缺点?

时间:2018-09-05 15:46:51

标签: azureservicebus azure-servicebus-queues azure-servicebus-topics

我目前正在学习 Azure Service Bus ,与具有单个订阅的主题相比,我不理解队列的真正好处强>。我看到,在两种情况下,都可以在侦听单个队列(或订阅)时创建不同的应用程序,以更快地处理消息。
那么,如果使用天蓝色服务总线队列可以以相同的方式工作,那么真正的便利是什么?更好的性能?便宜吗?

3 个答案:

答案 0 :(得分:4)

Service Bus Queues通过一个发送者和一个接收者提供消息传递。其中,服务总线主题支持多个接收者。

可以在主题下创建订阅以订阅消息。

“主题”下的每个订阅都像一个队列。

消息将发送到主题,并根据订阅中配置的过滤器,将消息传递到订阅。

在您的情况下,如果您确定只有一个接收者,则可以使用“队列”。

如果您认为接收者的数量将来可能会增加,并且需要先过滤邮件,然后再将其提供给接收者,则可以选择“主题”。

考虑效果,“队列”和“主题”之间的性能不会有太大差异。但是在主题中,消息将首先通过主题,并根据过滤器的评估,消息到达订阅。由于此步骤是额外的,因此此处的主题中可能会缺少一些性能。与队列中一样,消息将直接发送到队列中。

根据消息数(无论是队列还是主题)来计算价格。您无法在基本层的命名空间下创建主题。

答案 1 :(得分:1)

  

那么,如果使用天蓝色服务总线队列可以以相同的方式工作,那么真正的便利是什么?更好的性能?便宜吗?

以上都不是。对性能的影响微不足道,尤其是当您的过滤器为TrueFilter(不过滤)时。您所获得的好处是拓扑结构具有一定的灵活性,而普通队列则无法实现。例如,可以添加临时窃听来对消息进行故障排除。或添加对收到的所有邮件的审核。

答案 2 :(得分:0)

使用队列或主题的决定取决于用例。是发布/订阅,然后您使用主题和订阅。如果需要生产者/消费者模式,即每个消息仅应由消费者处理一次,则可以使用队列。因此,队列不仅打算在有一个接收者的情况下使用,也可以有多个接收者,而且消息将仅由一个接收者提取,而不是与队列连接的所有接收者都提取。因此,如果您的一个使用者在跟上将消息发送到队列的速率方面遇到问题,则可以添加更多的使用者以加快处理速度。