当前位置:  开发笔记 > 数据库 > 正文

连续WebJobs和CancellationToken

如何解决《连续WebJobs和CancellationToken》经验,为你挑选了1个好方法。

我没有得到取消令牌和网络工作背后的机制.

我知道我可以Microsoft.Azure.WebJobs.WebJobsShutdownWatcher().Token用来获取令牌并做出反应,token.IsCancellationRequested例如当WebJobs更新时.

场景: 由服务总线消息触发的连续作业.该作业调用我的数据层中的方法.此方法对azure sql数据库上的不同表执行一些更新.该方法运行约两分钟.

现在我将令牌传递给数据层,我会在没有请求取消的情况下完成我的工作; 否则我会结束我的更新.

现在的问题是:

作业主机是否等待我的方法,直到它完成然后停止?

我是否必须将"stopping_wait_time"设置为一个值(无论如何是默认值?),以确保我的工作正常完成?

如果将新消息写入服务总线队列,该消息是否会触发新作业,尽管取消正在等待处理?

谢谢你的任何澄清!



1> 小智..:

没有WebJob运行时不等待您的方法完成.您可以使用WebJobShutdownWatcher检索的取消令牌仅允许您通知webjob正在停止.它只允许您的代码有一点时间正常关闭.

连续webjobs的默认等待时间是5秒,但您可以使用"stops_wait_time"设置增加它,如您所建议的那样.

对于我所看到的,如果你的webjob正在停止,它将不再接受新的消息触发器,直到它重新启动.但我没有在文档中找到任何确认这一点的内容.

这里描述了webjobs的优雅关闭:https://github.com/projectkudu/kudu/wiki/Web-Jobs

希望这可以帮助,

朱利安


请注意,您不需要新建自己的`WebJobsShutdownWatcher`.SDK会自动为您完成.您只需在函数签名中添加一个`CancellationToken` - 运行时传递给您的函数的令牌来自一个也在监视关闭文件的链接令牌源.关于SDK优雅关闭的更多信息[这里](https://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-webjobs-sdk-storage-queues-how-to/#graceful)
推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有