我目前正在建設兩個窗口服務:Microsoft服務互聯互通問題
首先從互聯網連接需要的信息,然後將這些存入數據庫。這被設計爲快速和穩定,並且不做任何其他處理
第二個執行一個批處理過程,其中包含自上次運行以來已經到達的任何新消息。
我試圖想辦法,這樣,當新郵件準備處理的第二個服務將只運行它的批量處理,如果第二服務失誤的第一個服務將繼續下去,反之亦然。目前它每5秒使用一個循環。
我目前正在考慮使用消息隊列,其中第一個服務只在隊列爲空時寫入消息,第二個服務將查看隊列是否包含任何消息,如果不是進入異步等待直到消息到達,然後刪除該消息並運行。因此,使用隊列不是真正的隊列,而是作爲二進制開關,當它的狀態發生變化時會引發事件被觸發到第二個服務。
我認爲有沒有更好的方法來做到這一點,我沒有遇到過,有人請指出我在正確的方向嗎?
謝謝你的回答casperOne。我已經詳細闡述了我的問題。我可能實際上在濫用隊列機制,因爲我想將消息存儲在數據庫中,而不是將它們全部存儲到隊列中,所以將使用隊列作爲觸發事件的二進制開關。這個可以嗎? – bobwah 2009-01-29 08:51:44
你可以做那樣的事情。當您在隊列中發送消息時,您只需發送與數據庫中記錄的標識相對應的標識。但是,在雙方中,您應該包裝數據庫記錄和隊列消息的寫入以及事務中的接收。 – casperOne 2009-01-29 16:05:22