如何阻止对 Azure 存储队列的接收请求

How do I block receive requests on Azure Storage Queues

我目前有一个循环,我在其中轮询 Azure 存储队列如下:

// Get the next messages
            var messages = await Queue.GetMessagesAsync(_messageBatchSize, lockTimeout, null, null);

我原以为这里的 await 会在返回之前阻塞一段可配置的时间,但实际上它会立即 returns,然后提示我们立即重新请求消息,所以我们结束了当队列不忙时发出大量请求。

谁能告诉我 Azure 存储队列上是否有可用的阻塞等待方法?

下面,Azure 存储队列 API 检索消息的调用只是一个简单的 REST GET。尽管您可以为调用本身指定超时,但不会进行阻塞 API 调用。您可以查看 REST API 详细信息 here,其中您只能看到两个 time-based 设置:

  • 可见性超时(在队列消息为其他消费者重新出现在队列中之前,您需要处理队列消息的时间)
  • 调用超时(最长 30 秒)

如果调用 return 消息为零,您需要实施自己的退避策略。