【问题标题】:Is there a way to get the messages count which are pending for a subscription?有没有办法获取等待订阅的消息计数?
【发布时间】:2020-07-02 09:36:06
【问题描述】:

我当然知道管理客户端中有一个名为 ActiveMessages 的属性,它提供所有活动消息的计数。但我想知道的是未决消息

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

待定消息是我订阅的任何订阅者尚未收到的消息。

上下文-

想象一个场景,我的订阅者正在接收消息并执行一些长时间运行的操作。现在我已经根据消息数量扩大了基础设施。扩展基础架构的逻辑是每 30 秒运行一次的计时器触发 azure 函数。

问题是,即使我的消息被订阅者接收,活动消息计数并没有减少,这在我扩大基础设施的逻辑中产生了问题。

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

如果您以前遇到过这种情况,请告诉我

【问题讨论】:

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


    【解决方案1】:

    只有当偷看的消息完成后,活动消息数才会减少。 扩大或缩小规模的决定不应基于给定时间点队列中活动消息数量的度量,而应基于一段时间内的趋势。例如。过去 3 分钟内的消息数量是上升还是下降。

    【讨论】:

    • 谢谢肖恩,我做了你提到的趋势的事情,但有点惊讶的是,像这样的物业没有服务巴士。
    【解决方案2】:

    订阅者很可能一次只处理一条消息。所以,如果你能弄清楚有多少订阅者被配置为在任何给定时间点从订阅中挑选消息,

    您可以假设“MessagesThatAreUnderProcess”等于订阅者的数量。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-16
      • 1970-01-01
      • 2018-07-07
      • 1970-01-01
      • 1970-01-01
      • 2022-06-17
      • 1970-01-01
      相关资源
      最近更新 更多