我已经使用由许多应用程序订阅的主题将azure服务总线的实现写入我们的应用程序。我们团队的一个讨论是,我们是否坚持使用单个主题并通过消息的属性进行过滤,或者为我们的特定需求创建主题。
我们的场景是我们希望按优先级和环境变量进行过滤(测试和uat环境共享连接)。
我们也有主题(类似):
OR ,只是将这些值设置为两个属性的单个主题?
我的偏好是我们创建了单独的主题,因为我们正在利用可用的功能,我想在高负荷下这会更好地扩展?我读过偷看大队列可能效率低下。订阅单个主题似乎也更清晰。
任何建议都将受到赞赏。
答案 0 :(得分:3)
两种方法都有效。更多主题和订阅意味着您可以在部署时管理更多实体。如果高/中/低反映优先级,那么多个主题可能是更好的选择,因为您可以首先从最高优先级订阅中提取。
从可扩展性的角度来看,由于Service Bus已经在内部将负载分散到多个日志中,所以您注意到并没有太大差异,因此如果您使用六个主题或两个主题不会产生重大差异。
影响性能可预测性是服务类的选择。如果选择“标准”,则吞吐量和延迟是共享多租户基础架构的最佳选择。同一群集上的其他租户可能会影响您的吞吐量。 If you choose "Premium",您可以获得环保资源,从而为您提供可预测的性能,并且您可以从该资源池中处理您的两个或六个主题。
答案 1 :(得分:3)
我会针对每个环境使用不同的主题。它更清洁。可以针对每个环境单独监视主题中的消息计数。它的可扩展性稍微提高(例如,不会共享主题大小限制) - 但是这些限制是慷慨的,在测试中无关紧要。
但我的主要论点是:生产将如何(希望)如何。在生产中,生产将在ASB中拥有自己的连接(和命名空间),并且将具有单独的主题。因此,您不会通过生产中的属性过滤消息,那么为什么在测试中会有不同的方式?
最后提示:为了简化主题设置,我建议让您的应用在启动时自动创建它们。这很容易 - 检查它们是否存在,如果不存在则创建。