我有一个Azure函数,它监听天蓝色的队列,例如,发生了某些错误。它将消息重新添加到队列中。但是5次之后,消息将被移至中毒队列。
我想重新添加一条消息以便延迟。例如,重试1小时。因为我的Azure功能可以使用外部资源,所以暂时无法使用。我根本不想在10秒内重试5次,我想在1小时后重试。当然,我编写了自己的实现,但是此功能可能已经存在。
答案 0 :(得分:0)
@ 4c74356b41指出了正确的方法。您正在寻找host.json队列设置。
visibilityTimeout是消息处理失败时重试之间的时间间隔 maxDequeueCount是在将消息移至中毒队列之前尝试处理该消息的次数。
{
"version": "2.0",
"extensions": {
"queues": {
"visibilityTimeout" : "01:00:00",
"maxDequeueCount": 2
}
}
}
如果您的函数是v1,则类似
{
"queues": {
"visibilityTimeout" : "01:00:00",
"maxDequeueCount": 2
}
}
更新
由于问题主要是根据特定情况更改visibilityTimeout
,因此唯一设置CloudQueue.AddMessageAsync
的延迟是唯一的方法。实际上,visibilityTimeout
的功能完全相同,但是在功能应用程序级别(所有队列)上,因此在这种情况下我们不需要坚持这样做。