【问题标题】:Azure Queue trigger for Azure Functions: configure minimum polling intervalAzure Functions 的 Azure 队列触发器:配置最小轮询间隔
【发布时间】:2021-02-05 07:46:24
【问题描述】:

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

host.json settingsmaxPollingInterval中可以配置。对于它说的最小间隔

最小值为 00:00:00.100(100 毫秒)并递增到 00:01:00(1 分钟)

有什么方法可以强制在轮询之间产生所需的延迟?

【问题讨论】:

    标签: azure azure-functions task-queue azure-queues


    【解决方案1】:

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

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

    所以它不会每 X 秒轮询一次队列。

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

    【讨论】:

    • 我接受这个答案,因为我可能会这样做。在 Mac 上本地运行计时器功能时遇到了一些问题,但现在是 resolved。将任务传递给计时器函数可能仍涉及 Azure 队列。就整个情况而言,似乎有一种替代解决方案,即使用functionAppScaleLimit=1 设置和批处理限制1 来部署队列触发功能,这将在退出前等待所需的X 秒。计时器触发器虽然更简单,但目前可以满足我的需求。
    猜你喜欢
    • 2018-12-17
    • 1970-01-01
    • 2022-01-19
    • 2021-02-08
    • 2018-10-26
    • 2017-10-29
    • 2019-11-09
    • 2017-04-21
    • 2018-12-26
    相关资源
    最近更新 更多