【问题标题】:Azure WebJob sudden shutdown while processingAzure WebJob 在处理时突然关闭
【发布时间】:2018-11-25 15:04:59
【问题描述】:

我有一个连续的 Azure WebJob,设置为“始终开启”。 这个 WebJob 应该处理添加到存储队列中的新消息。

我想知道如果 WebJob 在处理队列触发器时由于某种原因停止工作怎么办。这样我会丢失队列中的消息,并且不会进入毒队列。

我该如何解决这个问题?

【问题讨论】:

  • 你检查日志了吗?也许发生了未处理的异常?
  • Kudu 中的 WebJob 状态如何?最初 WebJob 是否正常工作?请提供更多详细信息,我会帮助您。
  • 关于异常,我知道并且已经验证了消息在处理过程中导致异常将被移至 Poison 队列。
  • 我的问题是,如果我在 WebJob 处理队列消息时关闭主机应用服务会怎样。那么消息会发生什么?我确定它不会被移到毒药队列中,并验证了这一点。但是现在我在原始队列和毒药中都找不到我的消息。由于作业关闭,它甚至没有被处理到我的流程结束。是否可以通知我我的工作正在关闭,例如我可以将我的消息返回到它的原始队列?

标签: azure azure-webjobs azure-webjobssdk alwayson azure-webjobs-continuous


【解决方案1】:

我想知道如果 WebJob 出于某种原因停止工作怎么办 在处理队列触发器时。

首先,如果WebJob 在处理消息时退出,您不必担心数据损坏。当WebJob 访问要处理的消息时,它会将消息在队列中隐藏一段时间。如果你的WebJob在处理消息的过程中关闭了,该消息将在时间之后再次可用,并且它将被重新抓取并针对更新的代码运行。关于详细信息,您可以参考这个answer

至于您要求通知作业正在关闭。您可以使用Graceful Shutdown 并收听CancellationToken 您可以传递给您触发的函数并判断属性IsCancellationRequired 的值,然后您可以处理WebJob 将关闭。 Here 是关于CancellationToken 的示例代码。

【讨论】:

  • 有没有办法控制租赁时间跨度?
  • 对不起,我认为无法控制。
猜你喜欢
  • 2019-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-29
  • 1970-01-01
相关资源
最近更新 更多