我有一個天藍色的存儲表,其中有一些任務要在某個時間由工作角色完成。例如:Azure工作者角色 - 後臺任務計劃
Task 1: -> run every 5 min
Task 2: -> run every 1 min
Task 3: -> run every 10 min
Task 4: -> run every 1 min
Task 5: -> run every 5 min
...........................
Task 1000: -> run every 1 min
這是正確的做法: 每個任務都有一個名爲「LASTRUN」一欄的日期時間。還有另一個名爲「RunEvery」的專欄,用於存儲執行任務的時間。輔助角色遍歷所有任務,並不斷爲每個任務檢查列「LASTRUN」用以下方法:
DateTime currentTime = DateTime.Now;
if (currentTime >= (myTask.LastRun + myTask.RunEvery))
{
myTask.Execute()
}
else
{
Check.Next.Task.InTable();
}
那麼如果輔助角色連續運行消耗資源?我們如何能夠挖掘資源?或者我能否以更好的方式實現這一點?你有什麼建議?
幾天前,我可能寫了你正在尋找的東西。它是一個依賴Azure表的c#調度程序,專爲低事務消耗(每50個計劃任務的3個表存儲事務)而設計,可用於多個角色實例的上下文中。計劃任務是「transactionnal」,這意味着你必須調用.Handled();當任務完成時(否則它會在「x」小時後再次被觸發)。如果有興趣,我仍然需要清理代碼,然後我可以在github上發佈它。 – uzul
絕對有興趣!接縫有趣!請讓我知道什麼時候準備好了!提前致謝! –
我正在發佈它。 – uzul