为了处理每 8 小时运行一次的清理作业,目前我们已实现为:
- 使用 Azure 调度程序创建计划作业,该调度程序在触发时将消息放入存储队列。
以这样一种方式实现客户端,即它会在收到消息时连续轮询并处理。客户端的示例实现是:
while (!CancellationToken.Value.IsCancellationRequested) { var message = await client.GetMessageAsync(); if (message != null) { // process the message } }
但问题是我们正在无限期地等待,即使我们知道我们只会在 8 小时后收到消息,而且根据文档,每次尝试从队列中读取消息都会产生成本。
如何优化这一点,以便在每个可配置的时间而不是连续循环中动态生成侦听器?