我有一个连续的 Azure WebJob,设置为“始终开启”。此 WebJob 应该处理添加到存储队列的新消息。
我想知道如果 WebJob 在处理队列触发器时由于某种原因停止工作怎么办。这样我会丢失队列中的消息,它不会进入毒队列。
我该如何解决这个问题?
我有一个连续的 Azure WebJob,设置为“始终开启”。此 WebJob 应该处理添加到存储队列的新消息。
我想知道如果 WebJob 在处理队列触发器时由于某种原因停止工作怎么办。这样我会丢失队列中的消息,它不会进入毒队列。
我该如何解决这个问题?
我想知道如果 WebJob 在处理队列触发器时由于某种原因停止工作怎么办。
首先,如果WebJob
在处理消息时退出,您不必担心数据损坏。当WebJob
访问要处理的消息时,它会将消息在队列中隐藏一段时间。如果你WebJob
在处理消息的过程中关机了,过了这个时间,消息会再次可用,并且会被重新抓取并针对更新的代码运行。关于详细信息,你可以参考这个答案。
至于您关于被通知工作正在关闭的要求。您可以使用Graceful Shutdown并听取CancellationToken
您可以传递给您触发的函数并判断属性IsCancellationRequired
值,然后您可以处理WebJob
将关闭。这是关于CancellationToken
.