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