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

2vuwiymt  于 2023-01-18  发布在  其他
关注(0)|答案(2)|浏览(155)

我正在使用Azure队列保存失败的消息。
每个消息在被丢弃之前必须由Azure功能重试10次。
我如何确定每次重试之间的延迟?(如果我使用标准行为,则消息在不到一秒的时间内重试10次)

mkshixfv

mkshixfv1#

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

iyfamqjs

iyfamqjs2#

您的问题没有100%说明您是在Azure存储还是Azure服务总线中使用队列。如果您使用Azure存储队列:
你可以利用visibilityTimeout配置重试之间的时间。在内部,这将在指定的时间内将消息锁定给当前使用者。如果出错,将不会删除消息,超时后Azure队列将使消息再次可供任何可用的使用者使用。
https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-queue?tabs=in-process%2Cextensionv5%2Cextensionv3&pivots=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"
        }
    }
}

visibilityTimeout消息处理失败时重试之间的时间间隔。
有关更多详细信息,请参见此答案:Azure function visibilityTimeout

相关问题