失败后重新运行azure webjobs,N次异常

时间:2015-09-25 17:48:28

标签: azure azure-webjobs azure-scheduler

我有一个从互联网上获取文件并处理它的网络作业。我已将它绑定到每天午夜运行的调度程序。

有时,抓取文件进程失败并抛出异常,导致Web作业崩溃并停止,直到第二天调度程序再次启动。

要阻止应用程序崩溃,我有一个选项是用try-catch块包装它并处理错误。但我希望能够在失败后重新运行Web作业。

有没有办法告诉azure调度程序在失败后多次重新运行任务?

例如,我希望在失败5分钟后重新运行Web作业最多5次。我不想等到第二天调度程序启动。

1 个答案:

答案 0 :(得分:4)

  

有没有办法告诉azure调度程序在失败后多次重新运行任务?

Azure Scheduler没有提供验证" remote"的方法。执行成功与否,但您可以使用"存储队列" 操作类型将消息放入指定的队列,并在Web作业本身中实现相同的行为。如果抛出异常,Azure Web Jobs SDK将处理传入消息并重试up to 5 times,队列处理器也是可扩展的(自1.1起),因此您可以轻松实现指数重试策略或您需要的任何策略(通过扩展QueueProcessorQueueProcessorFactory类)。

步骤:

  1. 更新您的实际网络作业以使用队列(使用[QueueTrigger("myqueue")]),并将其配置为"持续运行" (在VS项目和azure Web App中)。
  2. 创建类型为"存储队列"的Azure计划程序作业,这会将消息推送到提到的队列中。
  3. enter image description here

    注意:此选项需要Web应用程序中的标准层(到期"连续运行")