2009-10-19 115 views
0

之情況:如何處理MSMQ延遲問題?

功能A() - >創建消息,並且在隊列中把該消息

監聽器 - 在隊列>檢查不斷如果theres一條消息並將其發送到服務 過程中它並得到結果和結果插入到數據庫

函數b() - >獲取從DB

結果假設結果從該服務沒有出來和函數b()現在被稱爲,消息ID的記錄將從數據庫返回空值因爲結果還沒有被插入。

你如何處理這些之情況?

回答

3

如果函數B依賴於服務完成處理,那麼它應該流掉消息隊列爲好。

當服務完成後,它應該寫一個新的消息到另一個隊列。另一個偵聽器應該把它撿起來,並調用函數B.

如果函數B是由用戶界面手勢啓動,UI只需要傳達所需的進程尚未完成,並禁止該動作,直到它。

+0

隊列或事件 - 它需要一次收聽已完成插入事件到數據庫要由適當的機制觸發任一方式。 – Murph 2009-10-19 15:53:56

+0

但在代碼級別的代碼被用線THNü會怎麼做,怎麼把ü從DB獲得結果之前的那些功能將被執行,RU提示顯示一個消息框「請等待執行的線,你的要求仍然是在進程下「,然後再次檢查數據庫是否已插入記錄,但如果它仍未插入? – kurozakura 2009-10-19 16:22:49

+0

類似的東西 - 你可以要求用戶手動刷新用戶界面(使用刷新按鈕或類似的東西),或者添加一個定時器到你的UI,以合理的間隔檢查數據庫並在功能B完成時更新它。如果用戶選擇在完成之前關閉該程序(或根據您的情況離開網頁),那就是他們的業務。 – 2009-10-19 16:58:06