有没有一种方法可以获取订阅中待处理的邮件数?

时间:2020-07-02 09:36:06

标签: azure-functions azureservicebus azure-servicebus-topics

我当然知道管理客户端中有一个称为ActiveMessages的属性,该属性可提供所有活动消息的计数。但是我想知道的是待处理的邮件

 var runTimeInfo = await Helpers.ManagementClient.GetSubscriptionRuntimeInfoAsync(topicName, 
 subscriptionName);
 var messageCount = runTimeInfo.MessageCountDetails.ActiveMessageCount;

待处理消息是我的订阅的任何订阅者尚未提取的消息。

上下文-

想象一个场景,我的订户正在接收消息并进行一些长时间运行的操作。现在,我根据消息数扩大了基础架构。扩大规模的逻辑是定时触发天蓝色功能,该功能每30秒运行一次。

问题是,即使订户收到了我的消息,活动消息的数量也没有减少,这在我扩大基础设施的逻辑上造成了问题。

所以我理想中需要的是PendingMessageCount,即ActiveMessageCount-MessagesThatareUnderProcess。

让我知道您之前是否遇到过这种情况

2 个答案:

答案 0 :(得分:0)

仅当完成查看的邮件时,活动邮件数才会减少。 放大或缩小的决定不应基于给定时间点队列中活动消息的数量的度量,而应基于一段时间内的趋势。例如。最近3分钟的邮件数量是上升还是下降?

答案 1 :(得分:0)

用户很可能一次将处理一条消息。因此,如果您可以确定在任何给定时间点配置了多少订阅者从订阅中挑选邮件,

您可以假设'MessagesThatAreUnderProcess'等于订阅者数量。

因此,基于此,'PendingMessageCount'='ActiveMessageCount'-'NumberOfSubscribers'