Azure 函数队列触发器:如何设置取消排队消息的时间延迟



我有一个 Azure 函数,它可以侦听 azure 队列,例如,有些错误。它会再次将消息重新添加到队列中。但是5次后消息将被移动到中毒队列。

我想将消息重新添加到队列中,但有延迟。例如,重试到 1 小时。因为我的 Azure 函数使用外部资源,而外部资源目前可能不可用。我根本不想在 10 秒内重试 5 次,我想在 1 小时后重试。当然,我编写了自己的实现,但可能这个功能已经存在。

@4c74356b41指出了正确的方法。队列的 host.json 设置就是您要查找的。

可见性超时是消息处理失败时重试之间的时间间隔 maxDequeueCount 是在将消息移动到病毒队列之前尝试处理消息的次数。

{
    "version": "2.0",
    "extensions": {
        "queues": {
            "visibilityTimeout" : "01:00:00",
            "maxDequeueCount": 2
        }
    }
}

如果您的函数是 v1,则类似

{
    "queues": {
      "visibilityTimeout" : "01:00:00",
      "maxDequeueCount": 2
    }
}

更新

由于问题主要是根据具体情况改变visibilityTimeout,因此相应地设置CloudQueue.AddMessageAsync的延迟是唯一的方法。实际上,visibilityTimeout执行完全相同的操作,但在函数应用级别(所有队列)上,因此在这种情况下我们不需要坚持这样做。

相关内容

  • 没有找到相关文章