【问题标题】:Azure Service Bus Retry Options Not Working (v5.2.0)Azure 服务总线重试选项不起作用 (v5.2.0)
【发布时间】:2022-07-15 21:59:50
【问题描述】:

我在 Azure Function 中使用 Microsoft.Azure.WebJobs.Extensions.ServiceBus 包的 5.2.0 版。 According to the docs here新版本支持失败操作自动重试。这是我的 host.json:

{
  "version": "2.0",
  "extensions": {
    "serviceBus": {
      "clientRetryOptions": {
        "mode": "Exponential",
        "tryTimeout": "00:02:00",
        "delay": "00:00:02.00",
        "maxDelay": "00:30:00",
        "maxRetries": 10
      }
    }
  }
}

这 - 除了时间值 - 与文档中的完全相同。在由ServiceBusTrigger 触发的函数中,我在某些情况下抛出异常。我希望消息被延迟,如文档中所述。但它被放回队列的头部并立即重试,没有延迟。我已经花了 2 个工作日来处理这个问题,我在网上找到的各种版本、不正确的文档和示例,我已经尝试了各种排列方式,但我就是无法让它发挥作用。

我再也看不到树木了。谁能看到我做错了什么?

【问题讨论】:

    标签: c# azure function azureservicebus azure-servicebus-topics


    【解决方案1】:

    似乎有人问过这个问题并回答了here。似乎重试仅适用于它认为可以重试的某些错误,即瞬态错误。

    【讨论】:

    • 是的,我看到了那个,但它与 Microsoft.Azure.WebJobs.Extensions.ServiceBus 的旧版本有关。据我所知,v5+ 中的clientRetryOptions 是为了解决这个缺点而实现的。
    【解决方案2】:

    您正在配置的选项控制函数绑定使用的服务总线客户端的隐式重试行为。当读取或发布消息由于被视为暂时的错误而失败时,这些设置将应用于客户端重试。此流程对您的 Function 是不可见的,除了可以通过读取/发布比正常时间更长的时间来完成。

    函数代码中的异常不受这些设置的约束。这些类型的异常由Functions error handling and retries 配置管理。

    【讨论】:

      【解决方案3】:

      就像其他答案中已经提到的那样,这些重试选项仅适用于内部(瞬态)异常。你需要的可以通过新的retry policies (preview)来实现:

      [FunctionName("EventHubTrigger")]
      [ExponentialBackoffRetry(5, "00:00:04", "00:15:00")]
      public static async Task Run([EventHubTrigger("myHub", Connection = "EventHubConnection")] EventData[] events, ILogger log)
      {
      // ...
      }
      

      或者,特别是对于 ServiceBus,您可以通过禁用自动完成并利用队列上的锁定持续时间属性来实现类似的行为。重试次数可以通过最大投递次数来控制。

      编辑:对于 ServiceBus,这些重试将是 removed soon

      【讨论】:

      • 使用这个时会弹出警告:Soon retries will not be supported for function 'FunctionName'. For more information, please visit http://aka.ms/func-retry-policies.
      • @CularBytes 正确,ServiceBus 重试将被删除。如链接消息中所述,EventHub 重试将继续可用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-10
      • 1970-01-01
      • 2021-05-20
      • 1970-01-01
      • 2016-12-25
      • 2019-05-04
      • 2017-05-08
      相关资源
      最近更新 更多