连续WebJobs和CancellationToken

时间:2015-12-30 12:09:44

标签: .net azure azure-webjobs azure-webjobssdk

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

我知道我可以使用id获取令牌并对Scores.find(..)做出反应,例如更新WebJobs时。

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

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

现在问题:

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

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

如果将新消息写入服务总线队列,尽管取消处于待处理状态,此消息是否会触发新作业?

感谢您的任何澄清!

1 个答案:

答案 0 :(得分:5)

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

连续webjobs的默认等待时间是5秒,但您可以使用" stops_wait_time"来增加它。设置,如你所说。

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

此处描述了webjobs的正常关闭:https://github.com/projectkudu/kudu/wiki/Web-Jobs

希望这有帮助,

于连