Azure 服务总线 - 确定事件连接数(主题/队列)

标签 azure servicebus

由于 Azure 服务总线将队列或主题的最大并发连接数限制为 100,我们是否可以使用一种方法来查询队列/主题以确定有多少并发连接?

我们知道我们可以捕获限制事件,但更喜欢主动方法,当系统负载较重时,我们可以主动增加或减少队列/主题的数量。

这里的用例是一个等待回复消息的进程,其中回复来自长时间运行的进程,并且订阅使用关联过滤器来促进发布者和订阅者之间的双向通信。因此,我们必须有一个 BeginReceive() 来等待响应,并且每个这样的发布者将在等待时间内消耗一个连接。系统已经平衡了多个主题的负载,但我们需要一种方法来主动了解创建了多少主题,这样我们就不会经常受到限制,但同时也不会为此目的有过多的主题。

最佳答案

我认为当前无法查询监听器计数。我认为订阅者对象也会考虑到这一点,因此理论上,如果每个主题最多有 2000 个订阅者,并且每个主题最多允许 100 个连接,那么就有很多潜在的连接。我们只需要记住,订阅者是合作的(每个订阅者都获得所有消息的副本),订阅者的接收者是竞争的(只有一个获得)。

我还看到过未经证实的报告,称当您开始运行超过 1,000 个订阅者时,性能会出现延迟,因此请务必测试此场景。

但是...考虑到您的情况,我推断性能时间可能不是最大的因素(您已经有长时间运行的进程)。因此,在工作流程中引入几秒钟的延迟可能并不重要。如果是这种情况,我会将 BeginRecieve 的超时设置为相当短的时间(几秒钟),并在尝试之间设置 sleep /等待延迟。这也为其他听众提供了获取消息的机会。我们可能还想考虑一种方法,尝试接收多个消息,然后将它们分配给其他进程进行处理(在这种情况下是协作?)。

简单说一下自己的一些想法。

关于Azure 服务总线 - 确定事件连接数(主题/队列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12478542/

相关文章:

azure - Windows Azure - 自动负载平衡 - 分区

python - terraform 可以为多个基础设施/工作空间并行运行 "apply"吗?

azure - 无法测试 Azure 的 transient 故障处理应用程序 block

Azure 服务总线可扩展性

azure - Azure 客户端 .OnMessage 是否为空队列生成计费请求?

windows - 尝试通过 RDP 连接到 Windows Azure

c# - 为什么 BrokeredMessage.RenewLock() 只更新几秒钟的锁?

azure - 如果异步发送消息,Azure 服务总线队列中的消息顺序是什么?

c# - 以 Unity 作为 IoC 的 Rebus Servicebus

azure - 为什么 Get-AzKeyVaultSecret 返回 "No Such Host Is Known"?