Azure队列:重试之间的延迟(Azure函数)



我正在使用Azure队列来保存失败的消息。

每条消息在被丢弃之前必须由Azure函数重试10次。

如何建立每次重试之间的延迟?(如果我使用标准行为,消息将在不到一秒的时间内重试10次)

您的问题并没有100%清楚您是否在Azure存储或Azure服务总线中使用队列。如果您正在使用Azure存储队列:

您可以利用visibilityTimeout来配置重试之间的时间。在内部,这将在指定的时间内将消息锁定给当前使用者。在发生错误的情况下,消息将不会被删除,并且在超时后Azure Queue将该消息再次提供给任何可用的消费者。

https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-queue?tabs=in-process%2Cextensionv5%2Cextensionv3&轴心= programming-language-csharp # host-json

{
"version": "2.0",
"extensions": {
"queues": {
"maxPollingInterval": "00:00:02",
"visibilityTimeout" : "00:00:30",
"batchSize": 16,
"maxDequeueCount": 5,
"newBatchThreshold": 8,
"messageEncoding": "base64"
}
}
}

visbilitytimeout消息处理失败时重试的时间间隔。

请参阅此答案了解更多细节:Azure函数visbilitytimeout

这是带有服务总线的Azure函数的正常行为。如果需要在重试之间设置延迟,则需要实现一个自定义逻辑,该逻辑要么延迟原始消息,要么发送带有延迟原始消息序列号的计划消息,以便在计划消息出现在队列上并由函数处理时检索消息。或者,也可以使用支持此功能的第三方库。

最新更新