Azure Functions 的 Azure 队列触发器:配置最小轮询间隔

Azure Queue trigger for Azure Functions: configure minimum polling interval

我需要处理一个任务队列,我想知道 Azure 队列是否适合我的情况。任务执行意味着查询速率受限 API,因此我希望每 X 秒进行一次轮询(可以更慢,但不能比这更快)。 Azure Function 应用程序将使用并发性为 1 的队列消息。

host.json settings中可以配置maxPollingInterval。对于最小间隔,它说

Minimum is 00:00:00.100 (100 ms) and increments up to 00:01:00 (1 min)

有什么方法可以在轮询之间强制要求延迟?

Azure 队列可能无法满足您的需求。这是 polling algorithm:

  • 找到消息后,运行时间等待两秒,然后 检查另一条消息
  • 当没有找到消息时,它会等待大约四秒钟再尝试 再次.
  • 在后续尝试获取队列消息失败后,等待 时间继续增加,直到达到最大等待时间(maxPollingInterval), 默认为一分钟。

因此它不会每隔 X 秒轮询一次队列。

你可以考虑使用timer trigger function,可以指定为每X秒运行;在函数内部,您可以编写逻辑来调用 api.