我想構建一個工作調度程序。 所以此作業調度程序允許用戶配置:在C#中構建一個工作調度程序#
- 作業開始時間。 (datetime值)
- 工作頻率:分鐘,小時,天,月,年(任何整數值)
我對如何建立這個調度2種選擇:
使用C#Timer類。但這也意味着我必須爲每個計劃作業創建一個新的Timer對象。我打算公開API端點以供用戶調用並POST開始時間和頻率信息。所以當端點被調用時,我需要創建一個新的Timer對象。 這將甚至規模?我如何管理Timer對象?我需要允許用戶創建,更新和刪除他們的工作。
使用Azure調度程序。但是,我有一個非常大的用戶數據庫。我看了看定價,可以在1個實例上運行的最大總工作量僅爲500萬個工作。另外,如果我有超過1個實例在運行,我很難管理正在運行的實例。我如何決定調度多個調度器實例?
您可以用一些數學,處理多個預定作業有一個計時器... –
是的,但它不適用於我的情況下,因爲用戶可以輸入工作頻率的任意整數。我仍然會爲不同的頻率創建不同的定時器。我有一個很大的用戶數據庫,不同的用戶會想要以不同的方式配置他們的工作 – Nyamnyam
如果您想自己創建它,只需運行一個計時器,並確認剩下多少時間用於下一次計劃作業迭代,並且每次都進行更新。 E.g如果你運行你的計時器每一秒(可能是過於頻繁)和命中,需要從現在開始,加入一分鐘,保存它作爲下一次執行時間和每個時鐘滴答,你會檢查,如果這個時候已經過去了的工作。否則,有很好的庫可以做到這一點,請參閱下面的答案。 –