【问题标题】:Most efficiet way to determine if there are messages in Azure Storage Queue确定 Azure 存储队列中是否有消息的最有效方法
【发布时间】:2014-08-03 18:11:02
【问题描述】:

我正在开始一个涉及 Azure 队列(不是服务总线)的项目。 我试图找出找出队列中是否有消息等待的最佳做法。

AFAIK,有两种方法:

  1. 使用 Queue 对象的 ApproximateMessageCount 属性
  2. 调用GetMessage,如果返回值为null - 没有消息。

哪一个在性能方面更好?有什么区别吗?

从计费 POV 来看,我了解到他们双方都有交易成本,对吗?

谢谢!

【问题讨论】:

    标签: azure azure-storage


    【解决方案1】:

    GetMessage 更快更便宜。 GetMessage 从逻辑角度来看也更正确,因为消息计数将返回已被另一个阅读器检索到的消息以及已过期但未被删除的消息。

    【讨论】:

      【解决方案2】:

      我过去也使用过这段代码:

      var cnnString = "the connection string";
      var queueName = "the queue name";
      
      var nsManager = NamespaceManager.CreateFromConnectionString(cnnString);
      return nsManager.GetQueue(queueName).MessageCount;
      

      也就是说 - 这是大约 4 个月前的事情。

      您需要这样做的任何原因(即您不只是从队列中消费消息吗?)

      【讨论】:

      • 主要原因是性能。我想使用更快、资源密集度更低的方法,但我不确定这些方法之间是否有区别。
      • 性能对比什么?对于您要实现的目标,我仍然有点不清楚(是的,计算队列中的消息......但是为什么?)
      • 好的,让我澄清一下:我想检查队列中是否有消息,如果有 - 获取第一个。第一种方法是调用 GetMessage,如果为空,它将返回 null。第二种选择是调用ApproximateMessageCount,如果数字大于0,则获取消息。我的问题是 - 当队列为空时,哪个选项会有更好的性能?
      猜你喜欢
      • 1970-01-01
      • 2021-06-21
      • 2022-10-08
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      相关资源
      最近更新 更多