傳統應用程序可能每秒都會向我們的數據庫寫入數據。它可以一次寫入多個條目。每個條目都需要儘快處理,並且需要爲每個條目調用長時間運行的外部Web服務。每秒輪詢一次數據庫並啓動n個長時間運行的任務
我在想最好的架構/模式來處理這個問題:我們需要每秒輪詢數據庫,然後 - 根據新條目的數量 - 啓動這些長時間運行的任務中的n個(被調用的外部Web服務)。這些任務將把結果寫回到遺留應用程序拾取的數據庫中。
我應該「簡單地」使用System.Threading.Tasks和System.Timers.Timer的組合來實現這個,還是有更好的選擇? (基於.Net 4.0 & SQL Server 2008)
更新:我們沒有啓用SQL Server Service Broker,並且理想情況下我想在沒有它的情況下尋求解決方案;至少我認爲這對這項任務來說是一個開銷。但我很樂意被說服。
觸發器或事件通知?爲什麼要輪詢是否有其他選擇? –
@MartinJames會有什麼好處?如果我想要做的事情是儘可能少的額外負載在我們的數據庫服務器上。輪詢應用程序可能位於另一臺服務器上。 – DotNetDeveloper
無論代理運行在何處,都可以在另一臺服務器上觸發事件。優點是沒有輪詢 - 無論是否添加新記錄,本身就是數據庫服務器上的負載的操作,以及刪除檢測附件時的延遲。 –