在工作者角色的Webjob中模仿日程安排功能

时间:2015-05-27 11:38:09

标签: azure azure-web-roles azure-worker-roles azure-webjobs azure-scheduler

我有一个Azure网络应用程序,其中包含一些用于运行某些后台任务的Web作业。这些任务需要按计划运行(每6小时一次)。使用WebJob很容易实现目标。但是,最近我们决定使用Web角色而不是Web App。为了运行后台任务,我一直在寻找使用Web角色的工作者角色。但是我在安排任务方面遇到了问题 如何在辅助角色中安排任务?此外,由于我使用的是Cloud Service的多个实例,我是否需要采取一些额外的预防措施来确保只有一个worker角色实例在一个时间点运行任务?

1 个答案:

答案 0 :(得分:2)

您可以使用辅助角色中的Azure WebJobs SDK来安排任务。 SDK包含 TimerTrigger 扩展名(details here),可用于按计划运行功能。例如,您只需编写一个函数:

// Runs once every 6 hours
public static void TimerJob([TimerTrigger("06:00:00")] TimerInfo timer)
{
    Console.WriteLine("Timer job fired!");
}

您的启动代码如下所示:

JobHostConfiguration config = new JobHostConfiguration();
config.UseTimers();

JobHost host = new JobHost(config);
host.RunAndBlock();