2015-12-03 49 views
5

我试图弄清楚是否有可能创建一个Azure webjob,并按照每1分钟计算一次,并让它能够被队列触发。我设法将两项要求分开,但不能在一份工作中合并。Azure webjob;按计划执行以及按队列触发

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

当我省略JobHost时...那么时间表工作完美。我很确定我在问一个矛盾,只需要做两个独立的工作,但也许你们中的一个人面临同样的问题并设法实现它。

回答

4

因为您已经在使用SDK,所以我不会在这里使用Azure Scheduler/Scheduled Jobs。您可以使用新的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); 
} 
+0

config.UseTimers();似乎不再存在 – TWilly

+1

它的确如此。您可能无法拉入包装或添加适当的参考。如果你不明白,可能是一个带有代码示例的新帖子? –

+1

这是Microsoft.Azure.WebJobs.Extensions NuGet包不是核心WebJobs –