Azure 触发的 Webjob - 检测 webjob 何时停止 [英] Azure Triggered Webjob - Detecting when webjob stops

查看:47
本文介绍了Azure 触发的 Webjob - 检测 webjob 何时停止的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个使用 定时器触发器.

I am developing a triggered webjob that use TimerTrigger.

在webjob停止之前,我需要处理一些对象,但我不知道如何触发webjob stop".

Before the webjob stops, I need to dispose some objects but I don't know how to trigger the "webjob stop".

拥有 NoAutomaticTrigger 功能,我知道我可以使用 WebJobsShutdownWatcher 类在 webjob 停止但触发作业时处理我需要一些帮助...

Having a NoAutomaticTrigger function, I know that I can use the WebJobsShutdownWatcher class to handle when the webjob is stopping but with a triggered job I need some help...

我看了使用 Azure WebJobs SDK 1.1.0-alpha1 的可扩展触发器和绑定器.

创建一个使用 WebJobsShutdownWatcher 类在 webjob 停止之前触发动作的自定义触发器 (StopTrigger) 是个好主意吗?

Is it a good idea to create a custom trigger (StopTrigger) that used the WebJobsShutdownWatcher class to fire action before the webjob stops ?

推荐答案

好的 答案就在问题中:

Ok The answer was in the question :

是的,我可以使用 WebJobsShutdownWatcher 类,因为它有一个 Register 函数,在取消令牌被取消时调用,换句话说,当 webjob 停止时.

Yes I can use the WebJobsShutdownWatcher class because it has a Register function that is called when the cancellation token is canceled, in other words when the webjob is stopping.

static void Main()
{
    var cancellationToken = new WebJobsShutdownWatcher().Token;
    cancellationToken.Register(() =>
    {
        Console.Out.WriteLine("Do whatever you want before the webjob is stopped...");
    });

    var host = new JobHost();
    // The following code ensures that the WebJob will be running continuously
    host.RunAndBlock();
}

编辑(基于马修评论):

如果您使用触发函数,您可以将 CancellationToken 参数添加到您的函数签名中.当主机自动关闭时,运行时将取消该令牌,从而允许您的函数接收通知.

If you use Triggered functions, you can add a CancellationToken parameter to your function signatures. The runtime will cancel that token when the host is shutting down automatically, allowing your function to receive the notification.

public static void QueueFunction(
        [QueueTrigger("QueueName")] string message,
        TextWriter log,
        CancellationToken cancellationToken)
{
    ...
    if(cancellationToken.IsCancellationRequested) return;
    ...
}

这篇关于Azure 触发的 Webjob - 检测 webjob 何时停止的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆