多个输出绑定的Azure函数重试策略?

vi4fp9gy  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(95)

我有一个azure函数,我希望它同时写入EventHub和EventGrid,并对重试策略有一些问题。
1.是否已经有了内置的重试策略?如果一个失败了,它会尝试再次写入吗?还是说,如果只写了其中一个,就算成功了?
1.我是否需要为eventthub和eventgrid定制重试代码,或者有可以同时使用的扩展?我相信有一个为EH,但找不到一个为EG。

zbwhf8kr

zbwhf8kr1#

活动中心:

EventHub Triggered函数支持重试策略,适用于函数级。查看下表以了解哪些触发器支持重试以及在何处配置其行为。
x1c 0d1x的数据

  • 当事件集线器触发的函数失败并引发异常时,将评估重试策略。
  • 然后,策略协助函数运行时重新运行失败的执行,直到它达到最大重试次数或函数成功执行。
  • 在极少数情况下,执行的重试次数将超过请求的最大重试次数。

当前重试计数将存储在示例的内存中。最大重试计数是最大努力,并且当事件集线器中出现故障时,重试计数重置为零,触发器将能够恢复处理并在新示例上重试批处理。
您可以使用以下命令配置函数在失败前尝试执行的最大次数:[FixedDelayRetry(5, "00:00:10")]的。

  • 要使用它,您需要安装nuget包Microsoft.Azure.WebJobs
    参考号:

事件中心触发器的重试策略

事件网格:

  • 事件网格没有内置的重试策略,但是它提供了持久的传递。
  • 如果在事件网格订阅中有任何失败,则它基于固定的重试计划和重试策略重试传递。
  • 默认情况下,事件网格一次向订阅者传递一个事件,它尝试立即为每个相同的订阅至少传递一次消息。
    事件网格重试策略:
  • 您可以使用Maximum number of attemptsEvent time-to-live (TTL)配置在创建事件订阅时自定义重试策略。

1.最大尝试次数:它的值必须介于1和30之间,默认值为30。
1.TTL:必须在1到1440之间,默认为1440分钟。默认情况下,事件网格会尝试1440分钟(1天)或30次。


  • 如果您在事件网格中同时设置了事件生存时间(TTL)和最大尝试次数,则当事件传递达到策略的任何限制时,它将被丢弃。
  • 您可以在创建事件网格订阅期间设置这些值,以使事件网格尝试传递事件。

根据我的研究,事件网格似乎没有像事件中心那样的扩展。

参考文献:

Azure事件网格交付和重试- Azure事件网格
死信和重试策略- Azure事件网格

相关问题