Azure webjob;计划执行也按队列触发

时间:2015-12-03 21:38:41

标签: c# azure azure-webjobs

我试着弄清楚是否可以制作一个Azure webjob,并按照每1分钟一次的方式安排它,并让它能够被队列触发。我设法将这两个要求分开但没有合并在一个工作中。

我知道为了使它们在队列上触发,我需要使用JobHost和一个带有捕获触发器的方法的Functions类。这仍会阻止调度程序,只处理触发器

当我省略JobHost时......那么时间表就完美了。我很确定我会提出一个矛盾,只需要做两个单独的工作,但也许你们中的一个人面对同样的事情并设法实现它。

1 个答案:

答案 0 :(得分:5)

我不会在这里使用Azure Scheduler / Scheduled Jobs,因为您已经在使用SDK了。您可以使用新的TimerTrigger

我可能做的是有两个功能。第一个函数是使用QueueTrigger的函数,另一个是使用v1.1.0中发布的新TimerTrigger WebJobs。您可以在此处查看我执行类似操作的示例:https://github.com/christopheranderson/feedbackengine#how-does-it-work

我有一个定时器来轮询RSS提要并删除队列消息,但我也可以从其他应用程序中删除队列消息,或者像我在我的场景中那样使用WebHook。

计时器触发文档:https://github.com/Azure/azure-webjobs-sdk-extensions#timertrigger

样品:

// Triggers every minute (every time the clock looks like 00:xx:xx)
public static void CronJob([TimerTrigger("0 * * * * *")] TimerInfo timer, [Queue("Foo")] out string message)
{
    Console.WriteLine("Cron job fired!");
    message = "Hello world!";
}

public static void QueueJob([QueueTrigger("Foo")] string message)
{
    Console.WriteLine(message);
}