2012-04-09 84 views
4

我正在使用事務性msmq隊列。我需要檢查隊列中的項目以及添加新項目之前尚未提交的項目。我可以檢查事務性msmq隊列中的項目

我可以檢查隊列中的所有項目,但我如何檢查已出隊但仍未提交的項目?

更新: 我有幾個奴隸實例和一個主服務器。每個從設備都可以上傳數據(大文件)以便從主設備上下載新數據。

從站在msmq隊列中註冊主站上傳和下載操作,然後啓動事務,出列操作,對大文件執行操作,如果所有其他回滾事務都提交事務。

我必須拒絕所有上傳註冊,直到我確定該文件完全上傳爲止,因爲多個奴隸不必同時上傳一個文件。

+0

這是一個我從未見過的新問題。您能否詳細談談您如何使用隊列?一次只有一個項目在隊列中嗎?在添加新項目之前先檢查的原因是什麼? – 2012-04-10 10:48:00

+0

查看更新後的信息 – tbicr 2012-04-10 11:19:42

回答

0

對我來說,這聽起來更像是你的客戶/服務結構的體系結構問題比MSMQ相關的更像。

如果我使用數據庫事務處理,我會直觀地期望所有客戶端在之後纔會看到之後的任何更改。在你的場景中,MSMQ的行爲就像我從DBMS期望的那樣。總而言之,據我瞭解你的任務,我認爲你可能會在看錯。考慮跟蹤上傳服務。如果您需要確保客戶端一次只上傳一個以上的文件,那麼您應該在其中執行此操作。

您可能的選擇取決於您的環境(我們目前還不知道)。您可以使用某種緩存來管理客戶端連接,或者您可以使用鎖定同步上傳,或將服務配置爲僅接受X連接,或者...