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