问题描述
我需要处理任务队列,我想知道Azure Queue是否适合我的情况。任务执行意味着查询速率受限的API,因此,我希望每隔X秒进行一次轮询(可以更慢,但不能比这快)。 Azure Function应用将使用并发值为1的队列消息。
可以在host.json settings maxPollingInterval
中进行配置。对于最小间隔,它说
最小值为00:00:00.100(100毫秒),最多递增为00:01:00(1分钟)
有什么方法可以强制两次轮询之间进行所需的延迟吗?
解决方法
天蓝色队列可能无法满足您的需求。这是polling algorithm:
- 找到消息后,运行时将等待两秒钟,然后 检查另一封邮件
- 未找到任何消息时,它将等待约四秒钟,然后尝试 再次。
- 在随后尝试获取队列消息失败之后,等待 时间持续增加,直到达到最大等待时间(maxPollingInterval), 默认为一分钟。
因此它不会每隔X秒轮询一次队列。
您可以考虑使用timer trigger function,可以将其指定为每X秒运行一次;在函数内部,您可以编写逻辑来调用api。