Azure Service Bus队列与一对多的主题(唯一)

问题描述 投票:0回答:2

我在Azure上托管了一个在线服务,它异步地将数据发送到内部部署客户端。每个客户端都由唯一的代码标识。

实际上只有一个主题,每个客户端的订阅都有一个唯一代码的过滤器,它作为参数在消息中发送。不会向所有客户广播任何消息。

我觉得以这种方式使用主题是错误的。我想到的另一种方法是为每个客户端使用一个专用队列,该队列是在第一次联系时创建的

这可能是一个更好的方法吗?

谢谢

azure azureservicebus azure-servicebus-queues azure-servicebus-topics
2个回答
0
投票

在我看来,使用Topics and Subscriptions是正确的方法。这就是为什么:

目前,Azure Service Bus根据您配置的规则处理路由逻辑(哪条消息需要转到哪个订阅)。如果您使用队列,路由逻辑将需要来到您的托管服务。在发送每条消息之前,您需要确保队列存在。我认为它会以某种方式增加服务级别的复杂性。

此外,主题和订阅将使您能够构建审计跟踪类型的功能(不确定您是否正在寻找此类功能)。您可以创建一个单独的订阅,该订阅具有将所有消息(True SQL Rule)与客户特定订阅一起传递到该订阅的规则。


0
投票

不建议为每个客户端创建单独的队列。这是主题解决的问题。

如果每个客户端都有单独的队列,则需要从服务器向多个队列发送消息。当客户数量增加时,这将变得乏味。

具有单个主题和多个订阅很容易管理,因为消息将仅从服务器发送到单个主题。

© www.soinside.com 2019 - 2024. All rights reserved.