2012-05-03 54 views
1

我們有一種情況是,我們在Service Broker隊列上發送消息作爲分佈式事務的一部分。顯然我們只想在事務完成時發送消息。Sql Server Service Broker如何與MSDTC進行交互

但是我們發現,在這種情況下,隊列的接收結束會在事務提交之前收到消息,不知何故也會被註冊。如果發件人回滾,最終導致隊列因毒害消息而被禁用,從而導致問題出現。

這是預期的行爲?如果是這樣,我們如何才能以事務方式發送消息?

+0

我很驚訝發送的回滾會觸發中毒消息檢測。關閉測試! –

+0

這就是問題所在!看起來接收人也在同一個不可分割的交易中結束,所以發送和接收最終都在同一個交易中!有很多與WCF事務和DCOM的交互使事情變得更加複雜 – Ben

回答

0

難道是因爲你在用NOLOCK提示讀隊列嗎?在這種情況下,您可以在隊列中看到消息,但實際上您無法接收消息!只有在事務提交之後,它才能被接收。

相關問題