我在此处使用 WEBJOBS_SHUTDOWN_FILE 和此处使用 Cancellation Tokens 阅读了有关正常关闭的信息,因此我了解正常关闭的前提,但是我不确定它们将如何影响正在处理队列消息的 WebJobs。
所以这是场景:
- 我有一个带有监听队列功能的 WebJob。
- 消息被添加到队列并且作业开始处理。
- 在处理过程中,有人推动开发,触发重新部署。
假设我已将 WebJobs 连接到 git push 上部署,此部署还将触发 WebJobs 被更新,这(据我所知)将启动作业中的某种关闭工作流。所以我有几个问题源于此。
- 正在处理队列消息的作业会在作业退出之前完成对消息的处理吗?或者任何关闭通知本质上都被视为“这个婊子即将关闭。如果你没有任何东西可以处理它,你就是 SOL。”
- 如果我们是 SOL,那么我们处理关闭的最佳选择是否本质上是将您正在做的任何事情包装在相当于 DB 事务中并以所有更改在关闭时回滚的方式实现您的关闭处理程序?
- 如果队列消息正在处理中并且 WebJob 关闭,该消息是否会重新排队?如果不是,这是否意味着我的关闭处理程序需要处理重新排队该消息?
- 在通知作业需要关闭后,监听队列的函数是否有可能获取更多队列消息?
非常感谢这里的任何指导!此外,如果除了我提到的之外,还有其他关于如何处理作业关闭的有用链接,如果您能分享这些链接,那就太好了。