ExponentialBackoffRetry 如何与 Azure 函数的 ServiceBus 触发器配合使用?

2024-01-09

我想在我的Azure函数中实现一个非常简单的行为:如果在处理过程中出现异常,我想推迟下一次重试一段时间。据我所知,在服务总线中没有直接的可能性,例如(除非创建一条新消息),但服务总线触发器有可能ExponentialBackoffRetry.

我还没有找到任何有关服务总线连接如何工作的文档。 IE。函数执行失败后消息会发生什么情况。

一种可能的方法是将消息保留在功能基础设施中,并在我认为的持续时间内不断更新锁定。关于我想知道的一些更实际的问题:

  1. 我可以使用退避重试多长时间(例如,如果我想重试长达 7 天,例如这可行吗?)
  2. 当主机重置/重新启动/缩放时会发生什么,我是否会由于实现细节而失去此退避,或者它仍然以某种方式维护?

来自文档 https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-error-pages?tabs=csharp#using-retry-support-on-top-of-trigger-resilience:

在触发弹性之上使用重试支持

函数应用重试策略独立于触发器提供的任何重试或弹性。函数重试策略仅位于触发弹性重试之上。例如,如果使用 Azure 服务总线,默认情况下队列的消息传递计数为 10。默认传递计数意味着在尝试传递队列消息 10 次后,服务总线将使该消息成为死信。您可以为具有服务总线触发器的函数定义重试策略,但重试将分层在服务总线传输尝试之上。

例如,如果您使用默认的服务总线交付计数 10,并定义函数重试策略为 5。消息将首先出队,将服务总线交付帐户增加到 1。如果每次执行都失败,则在五次尝试触发后相同的消息,该消息将被标记为已放弃。服务总线会立即重新排队该消息,它将触发该函数并将传递计数增加到 2。最后,在 50 次最终尝试(10 次服务总线传递 * 每次传递 5 次函数重试)之后,该消息将被放弃并触发死机。服务巴士上的信。

对于指数重试,您可能需要将总退避时间+处理时间保持在小于函数可以保留消息的时间,否则锁将过期,甚至成功处理也会导致异常并重试。

从目前服务总线锁定消息的方式来看,Azure 服务总线上的指数退避并不是一个好主意。一旦持久终点成为可能(无限锁定时间,无需更新),这将更有意义。

Update:功能重试功能正在启用已弃用 https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-error-pages.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ExponentialBackoffRetry 如何与 Azure 函数的 ServiceBus 触发器配合使用? 的相关文章

随机推荐

  • Spring Boot 应用程序独立运行良好,在 docker 中出错

    我有一个基于 spring boot 的 java 应用程序 它可以从命令行正常运行 嵌入式 tomcat 独立 Problem 当我在 docker 中运行该应用程序时 它无法正确运行 控制台显示应用程序启动正常 没有错误 但是 浏览器显
  • 如何为每个应用程序使用一个 HttpClient?

    我正在寻找一种有效的方法来使用HttpClient对于我的 Android 应用程序 我在不同的活动中使用 HttpClient 并且我只想为应用程序使用一个客户端并将其在活动中传递 尽管我查看了一些答案 但我无法找到一种方法来仅使用一个客
  • 如何更改引导响应样式?

    我们计划以其他方式改变引导程序的响应性质 请查看当前的 html function panel title a on click function this closest panel siblings toggle panel title
  • Python的交互式提示符“>>>”输出到哪里?

    我遇到了一个有点不寻常的情况 我正在尝试编写交互式控制台的脚本 用于教学 测试目的 并且我尝试了以下操作 python gt dev null Python 2 7 3 v2 7 3 70274d53c1dd Apr 9 2012 20 5
  • Videojs,如何动态更新 m3u8 播放列表

    我想将新的传入块从后端添加到已经是 live m3u8 播放列表的播放器 这是现有的播放列表 已设置并正在播放 EXTM3U EXT X PLAYLIST TYPE VOD EXT X TARGETDURATION 6 EXT X VERS
  • 使用 .Net 开发 Robocode 类型的游戏,用于学校作业

    我目前正在学校的最后一年 正在攻读计算机研究国家高级文凭 基本上在最后一个学期 我们需要开发一个软件项目 该项目基本上包含whole system 现在 我想做的是类似的事情Robocode https robocode sourcefor
  • Highstock/Highcharts 上每条线都有不同的后缀

    有没有一种简单的方法可以在每行上使用不同的后缀值 现在我有 3 行 我正在尝试更改每行的后缀 但我只能使用格式化程序功能找到它 但是 如果我使用格式化程序功能 我需要编辑每个工具提示 使其与默认工具提示一样 而且我不知道默认格式 我的意思是
  • 进程启动和模拟

    我在 ASP NET 2 0 中的模拟上下文中启动进程时遇到问题 我正在我的网络服务代码中启动新流程 IIS 5 1 NET 2 0 WebMethod public string HelloWorld string path C KB G
  • 如何显示前 2 段?那么剩下的段落呢? - PHP

    我在一个字符串中有 4 段文本 每个段落都被包围 p p 我的第一个目标是输出前两段 我的第二个目标是将剩余段落输出到页面上的其他位置 有时我可能会处理包含超过 4 个段落的字符串 我已经在网上搜索了现有的任何内容 有很多关于仅显示第一段的
  • 更改现有张量流变量的设备放置

    如何更改 tf Variable 的设备放置 我尝试了两种方法 a tf Variable 1 name a a s device is not set with tf device gpu 0 a tf get variable a 1
  • com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障

    我正在努力让我的数据库与我的 Java 程序对话 有人可以给我一个使用 JDBC 的快速但肮脏的示例程序吗 我遇到了一个相当惊人的错误 Exception in thread main com mysql jdbc exceptions j
  • 如何从 ionic 2 中的导航获取当前页面

    我是 Ionic2 的新手 我正在尝试根据当前的菜单选择构建动态选项卡 我只是想知道如何使用导航控制器获取当前页面 export class TabsPage constructor navParams NavParams navCtrl
  • 有没有办法在 minizinc 中自定义 int_search ?

    我正在处理图形着色问题 想知道是否可以指定搜索策略 我找到了搜索注释 比如int search q first fail indomain min 但例如 我希望算法选择具有最高节点度数的下一个节点 假设这会导致更快的失败 因为具有高度数的
  • Prolog (SWI-Prolog) 中谓词“simple/1”的含义是什么

    我在看书时遇到了问题 我看到一个程序使用谓词 简单 我猜simple 1 我不知道这个谓词的含义是什么 我找不到它 help simple 在控制台中 但是当我在控制台中尝试一些查询时 它的工作原理如下 5 simple p x false
  • 如何向函数传递数组文字?

    如何传递数组而不使其成为单独的变量 例如我知道这有效 class Test public static void main String args String arbitraryStrings foo takesStringArray a
  • Angularjs 可以在多个 ng-app 中重用一个服务吗

    我正在尝试创建一个将使用多个角度ng应用程序的网络应用程序 并且至少两个可以使用相同的服务代码 它们不需要共享数据 但它们执行类似的功能 那么我如何避免代码重复 那是 myApp1 factories factory myservice f
  • 表中的 html 表有效吗?

    在html中 表内有表是否有效 table tr td table tr td td tr table td tr tr tr table 是的 完全有效 通过将您所拥有的内容粘贴到 W3C 验证器中 唯一的错误是关于文档类型 头标签等 没
  • 用纯Java学习JavaCV [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在努力学习JavaCV 众所周知 缺乏这方面的教材是一个很大的问题 在JavCV主页上 他们为 O
  • React Native开发服务器返回响应错误代码500

    错误 捆绑失败 错误 无法解析模块 react transform hmr lib index js from P React Native TryReactNative App js 模块 react transform hmr lib
  • ExponentialBackoffRetry 如何与 Azure 函数的 ServiceBus 触发器配合使用?

    我想在我的Azure函数中实现一个非常简单的行为 如果在处理过程中出现异常 我想推迟下一次重试一段时间 据我所知 在服务总线中没有直接的可能性 例如 除非创建一条新消息 但服务总线触发器有可能ExponentialBackoffRetry