Azure webjob功能的单独日程安排?

时间:2015-03-31 18:52:33

标签: azure scheduling azure-webjobs

是否可以为Azure webjob中的各个非触发功能设置单独的计划?我问,因为我有六个单独的任务,我想在一天的不同时间以不同的时间间隔运行,并且不想为每个任务创建一个单独的项目。

3 个答案:

答案 0 :(得分:7)

是的,您可以使用TimerTriggerAttribute

以下是示例代码:

public class Program
{
    static void Main(string[] args)
    {
        JobHostConfiguration config = new JobHostConfiguration();

        // Add Triggers for Timer Trigger.
        config.UseFiles(filesConfig);
        config.UseTimers();
        JobHost host = new JobHost(config);
        host.RunAndBlock();
    }

    // Function triggered by a timespan schedule every 15 sec.
    public static void TimerJob([TimerTrigger("00:00:15")] TimerInfo timerInfo, 
                                TextWriter log)
    {
        log.WriteLine("1st scheduled job fired!");
    }

    // Function triggered by a timespan schedule every minute.
    public static void TimerJob([TimerTrigger("00:01:00")] TimerInfo timerInfo, 
                                TextWriter log)
    {
        log.WriteLine("2nd scheduled job fired!");
    }
}

您还可以使用CRON表达式指定触发函数的时间:

Continuous WebJob with timer trigger and CRON expression

答案 1 :(得分:0)

您可以编写一个普通的旧控制台应用程序,其循环使用Thread.Sleep()在每次迭代结束时暂停。每次循环唤醒时,它都会检查它在内部保留的调度,并调用当时应该运行的任何函数。该计划可以存储在app.config中,这样您就可以在不重新编译WebJob的情况下进行更改,只需上传一个新的app.config并重新启动它。

或者,如果您愿意,可以省略无限循环并按固定间隔(例如每30分钟)安排WebJob,并在每次运行时检查其内部计划。

答案 2 :(得分:0)

我最终使用Quartz.net连续工作来安排Web作业内部的各种活动。这非常有效。