問題
我的留言記錄,tbl_message_queue
SQL表,每有一個釋放的時間戳字段(現在或將來)。新紀錄不斷被插入。計劃的.exe執行時間戳
當發佈時間戳到達時,合格記錄需要由控制檯應用程序.exe處理。處理完成後,相關記錄將從tbl_message_queue
中刪除。
釋放時間戳和執行之間的滯後時間應該減少/消除。
選項#1:頻繁地輪詢
,我可以把我的.exe通過Windows Task Scheduler每隔10-15秒運行。這將包括這樣一個SQL語句:
SELECT *
FROM tbl_message_queue
WHERE qmsg_ts_release <= GETDATE()
這感覺就像一個低效的,蠻力,滯後型解決方案。但這是我最熟悉的結構。
選項#2:重新計劃的SQL代理作業
我從來沒有嘗試過這一點,但似乎是它可以工作。這聽起來真的很糟糕,所以請原諒我,如果這是一個非常糟糕的主意。
我可以創建具有CmdExec Job Step一個SQL代理作業,並不斷重新安排工作:.exe文件的
UPDATE qmsg_ts_release
INSERT tbl_message_queue
- 完成下一次運行在
MIN(qmsg_ts_release)
。呼 ...我知道這聽起來真難看,但它不是積極投票,並有可能消除任何滯後。
其他選項
是否有任何其他選項,或者更好的解決方案,這種類型的問題?我不熟悉消息隊列體系結構中的最佳實踐。
類似於MSMQ或SQL Server Service Broker這種類型的問題會更好嗎?我對其他選項很不熟悉,不確定從哪裏開始。
爲什麼當您插入新記錄時,您無法創建REST服務並調用該服務。 – Steve 2014-10-28 19:05:27
@聽起來好像OPs問題是記錄插入了將來的日期時間進行處理,例如,這並不是打算在插入後立即執行,而是立即在日期時間 – Kritner 2014-10-28 19:14:05
@Kritner正確。 – 2014-10-28 19:51:43