1

我已經瀏覽了Azure中WebJobs,函數和邏輯應用程序的文檔,但是我找不到通過代碼安排一次性執行過程的方法。我的用戶需要能夠安排通知在未來的特定時間發佈(通常在幾小時或一天內安排)。我在這些過程中讀到的所有內容都是使用CRON表達式,它不是爲一次性執行而設計的。我意識到我可以安排作業按間隔運行,並檢查數據庫以查看是否需要運行其餘作業,但是我希望儘可能避免不必要地運行作業。任何幫助表示讚賞。以編程方式安排Azure功能的一次執行

如果是相關的,我使用的都是C#,ASP.NET MVC Core,App Services和一個SQL數據庫,都在Azure中託管。我的計劃是使用Logic應用程序來檢查預定事件的數據庫,並通過Twilio,SendGrid和iOS/Android推送通知發送通知。

+0

你爲什麼不使用邏輯的應用程序觸發一個HTTP觸發功能? – M0rty

回答

1

您可以使用Azure自動化使用REST API以編程方式計劃任務。瞭解它here

也可以使用Azure事件網格。基於this文章中,你可以「通過觸發邏輯應用程序擴展現有的工作流程,一旦在你的數據庫中的新記錄」。

希望這有助於。

0

你可以使用Azure的隊列觸發與推遲知名度。這將保持在規定的超時無形的消息。這樣可方便地作爲一個計時器。

CloudQueue queueOutput; // same queue as trigger listens on 
var strjson = JsonConvert.SerializeObject(message); // message is your payload 
var cloudMsg = new CloudQueueMessage(strjson); 

var delay = TimeSpan.FromHours(1); 
queueOutput.AddMessage(cloudMsg, initialVisibilityDelay: delay); 

https://docs.microsoft.com/en-us/dotnet/api/microsoft.windowsazure.storage.queue.cloudqueue.addmessage?view=azurestorage-8.1.3,詳細瞭解此重載方法addMessage的。

0

一種選擇是使用ScheduledEnqueueTimeUtc屬性在應用程序中創建Azure服務總線消息。這將在隊列中創建消息,但只會在當時消耗。

然後,邏輯應用程序可能正在監聽該服務總線隊列並進行進一步的處理,例如, SendGrid,Twilio等..

HTH