我正在开发一个 Azure EventHub 函数触发器来批量使用消息。我想了解以下两件事。
事件中心触发器中是否有默认的重试策略/机制,以便在引发未处理的异常时重试,无需在 host.json 或 on 上执行任何其他配置触发级别作为属性(FixedDelayRetry/ExponentialBackoffRetry)?
如何配置host.json而不添加功能级别属性?以下是我使用的host.json文件
{ "version": "2.0", "logging": { "logLevel": { "default": "Information", "Host.Results": "Error", "Function": "Error", "Function.MyEventHubTrigger": "Information", "Host.Aggregator": "Trace" }, "applicationInsights": { "samplingSettings": { "isEnabled": true, "excludedTypes": "Request;Trace;Exception" } } }, "extensions": { "eventHubs": { "clientRetryOptions": { "mode": "exponential", "tryTimeout": "00:01:00", "delay": "00:00:00.80", "maximumDelay": "00:01:00", "maximumRetries": 3 } } } }
我已经检查了以下有关重试机制配置的文档,并且能够将 FixedDelayRetry
配置为属性,并且它按预期工作。但是,我无法使 host.json 配置正常工作(我尝试了指数模式和固定模式)
如有任何帮助,我们将不胜感激。
最佳答案
上面的示例中有两种不同的重试机制。您在 host.json
中定义的配置控制着管理事件中心 SDK 执行的服务操作的隐式重试。这些对您的函数代码不可见,也不适用于您的处理代码中发生的错误。
该属性控制函数重试策略,该策略监视您的处理代码并对从中出现的错误使用react。据我所知,这不能在 host.json
中配置,并且需要该属性。更多上下文可以在 Retry policies 中找到Azure Functions 错误处理和重试
部分。
关于c# - Azure EventHub函数触发默认重试机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77173543/