我試圖弄清楚是否有可能創建一個Azure webjob,並按照每1分鐘計算一次,並讓它能夠被隊列觸發。我設法將兩項要求分開,但不能在一份工作中合併。Azure webjob;按計劃執行以及按隊列觸發
我知道,爲了讓它們在隊列上觸發,我需要使用JobHost和一個Functions類來捕獲觸發器。仍然這阻止調度程序,只處理觸發器
當我省略JobHost時...那麼時間表工作完美。我很確定我在問一個矛盾,只需要做兩個獨立的工作,但也許你們中的一個人面臨同樣的問題並設法實現它。
我試圖弄清楚是否有可能創建一個Azure webjob,並按照每1分鐘計算一次,並讓它能夠被隊列觸發。我設法將兩項要求分開,但不能在一份工作中合併。Azure webjob;按計劃執行以及按隊列觸發
我知道,爲了讓它們在隊列上觸發,我需要使用JobHost和一個Functions類來捕獲觸發器。仍然這阻止調度程序,只處理觸發器
當我省略JobHost時...那麼時間表工作完美。我很確定我在問一個矛盾,只需要做兩個獨立的工作,但也許你們中的一個人面臨同樣的問題並設法實現它。
因爲您已經在使用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);
}
config.UseTimers();似乎不再存在 – TWilly
它的確如此。您可能無法拉入包裝或添加適當的參考。如果你不明白,可能是一個帶有代碼示例的新帖子? –
這是Microsoft.Azure.WebJobs.Extensions NuGet包不是核心WebJobs –