我不明白取消令牌和网络作业背后的机制。
我知道我可以使用Microsoft.Azure.WebJobs.WebJobsShutdownWatcher().Token
获取令牌并做出反应token.IsCancellationRequested
例如,当 WebJobs 更新时。
设想:连续作业,由服务总线消息触发。
该作业调用我的数据层中的一个方法。
此方法对 azure sql 数据库上的不同表进行一些更新。此方法运行大约两分钟。
现在,我将令牌传递到数据层,在那里我将在不请求取消的情况下完成我的工作;否则我会结束我的更新。
现在的问题是:
作业主机是否会等待我的方法完成然后停止?
我是否必须将“stopping_wait_time”设置为足够高的值(默认值是什么?)以确保我的工作正确完成?
如果将新消息写入服务总线队列,尽管取消正在等待处理,但该消息是否会触发新作业?
感谢您的任何澄清!
不,WebJob 运行时不会等待您的方法完成。您可以使用 WebJobShutdownWatcher 检索的取消令牌仅允许您收到 Web 作业正在停止的通知。它只允许您的代码有一点时间正确关闭。
连续 webjobs 的默认等待时间为 5 秒,但您可以按照您的建议使用“stopping_wait_time”设置来增加它。
据我所见,如果您的网络作业正在停止,它将不再接受新的消息触发器,直到重新启动为止。但我在文档中没有找到任何证实这一点的内容。
Webjobs 的正常关闭描述如下:https://github.com/projectkudu/kudu/wiki/Web-Jobs https://github.com/projectkudu/kudu/wiki/Web-Jobs
希望这可以帮助,
Julien
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)