2

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

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

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

4

1 回答 1

3

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

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

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

突显一些想法。

于 2012-09-18T18:05:30.807 回答