Azure服务总线队列与一对多主题(唯一)

Azure服务总线队列与一对多主题(唯一),azure,azureservicebus,azure-servicebus-queues,azure-servicebus-topics,Azure,Azureservicebus,Azure Servicebus Queues,Azure Servicebus Topics,我有一个托管在Azure上的在线服务,该服务将数据异步发送到本地客户端。 每个客户机都由唯一的代码标识 实际上,只有一个主题,每个客户端都有一个订阅,该订阅在唯一代码上有一个过滤器,作为消息中的参数发送。不会向所有客户端广播任何消息 我觉得这样使用主题是错误的。 我想到的另一种选择是为每个客户机使用一个在第一次接触时创建的专用队列 这是一个更好的方法吗 谢谢不建议为每个客户端创建单独的队列。这是主题解决的问题 若每个客户机都有单独的队列,那个么需要从服务器向多个队列发送消息。当客户端数量增加时,

我有一个托管在Azure上的在线服务,该服务将数据异步发送到本地客户端。 每个客户机都由唯一的代码标识

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

我觉得这样使用主题是错误的。 我想到的另一种选择是为每个客户机使用一个在第一次接触时创建的专用队列

这是一个更好的方法吗


谢谢

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

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


拥有一个主题和多个订阅很容易管理,因为消息将只从服务器发送到一个主题

在我看来,使用
主题和订阅
是正确的选择。原因如下:

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


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

只有一个主题包含许多过滤订阅(就像现在一样),这不意味着所有消息都会传递给所有客户机,然后在客户机级别过滤掉吗?这似乎有很多不必要的流量和潜在的安全问题,因为客户端不应该看到其他人的消息。或者,您是在告诉我们,这些消息只会以物理方式发送给符合规则的订阅?如果是这样的话,我同意主题/订阅是正确的选择。如果规则匹配,将向订阅发送消息。