![](/img/trans.png)
[英]how can i find the instanceid/correlation ID of the scheduled Task that started my process
[英]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.