Azure Service Bus - 确定活动连接数(主题/队列)

时间:2012-09-18 13:58:47

标签: azure servicebus

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

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

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

1 个答案:

答案 0 :(得分:3)

我认为目前无法查询侦听器计数。我认为订阅者对象也是如此,理论上,如果每个主题最多有2000个订阅者,并且如果每个允许多达100个连接,那么很多可能的连接。我们只需要记住,订户是合作的(每个都获得所有消息的副本),子载体上的接收器是竞争性的(只有一个获得它)。

当您开始运行时,我也看到了未经证实的性能延迟报告> 1,000个订阅者,因此请确保您测试此方案。

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

突然有些想法。