2015-12-03 54 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 –