簡體   English   中英

如何高效處理定時任務?

[英]How can I process scheduled tasks effeciently?

我開發的應用程序已經有 20 多年的歷史了。 很多windows服務都是用來處理定時任務的。 例如,如果計划處理一筆付款,它會被添加到一個隊列,一個數據庫表中,其中包含開始處理所需的所有信息。 然后 windows 服務接收到它,將隊列中的狀態更改為“正在處理”並開始實際處理。 如果出現錯誤,狀態將更改為“錯誤”,如果成功,則將狀態設置為“已完成”。 雖然這在一段時間內運作良好,但由於數量的增加,現在需要更長的時間來處理。 我們還看到數據庫表出現死鎖,因為該服務的多個實例(為擴展部署了 3-4 個實例)正在嘗試讀取/更新同一個數據庫表。

此應用程序不在雲端,因此沒有可以使用的特定於雲端的解決方案。 無論如何可以更改設計/架構,例如使用 RabbitMQ 或類似的東西來實現這一點?

此應用程序是使用 ASP.NET MVC、C# 和 MSSQL 構建的。

嘗試通過添加索引器或對數據庫進行分片來優化查詢,這將使您編寫更少的代碼,但在數據庫端做更多的工作。 但在這種情況下使用消息隊列始終是更好的解決方案,但需要付出大量努力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM