2008-10-30 46 views
2

我正在調查爲我的團隊的新項目使用MSMQ,但我需要知道是否可以發送MSMQ消息並在System.Transactions.TransactionScope中執行SQL命令,並將它們提交或回滾到一起。我在網上找不到可靠的源代碼,在代碼示例中顯示「是」。是否可以在TransactionScope中執行SQL命令併發送MSMQ消息?

我需要發送一些消息到單個隊列並在單個數據庫中插入一些記錄,但我需要一起成功或失敗。

編輯:我無法真正驗證這是否可以在我的測試中正常工作(我已經很快完成了這項任務),但是所有的文檔指出TransactionScope在相同的實例中捕獲MSMQ消息和SQL命令。

+0

我不知道答案,但肯定不會很難敲一些單位測試一起來驗證這個? – 2008-10-30 21:19:25

回答

3

從個人經驗來看,我知道TransactionScope在SQL方面效果很好。我對MSMQ不太熟悉,但快速的Google search顯示了一些示例(通常是論壇討論),看起來它正在成功運行。 System.Messaging.MessageQueue對象也有一個.Transactional屬性,而.Send()方法有一個MessageQueueTransaction參數,所以我會說它應該一起工作。

下面是論壇的一個搜索中的代碼示例(不是我的代碼):

using (TransactionScope scope = new TransactionScope()) 
{ 
    using (MessageQueue myQueue = new MessageQueue(QUEUE_NAME)) 
    { 
    if (myQueue.Transactional) 
     { 
     myQueue.Send(TicketTextBox.Text, "Message", MessageQueueTransactionType.Automatic); 
     } 
    } 
scope.Complete(); 
} 

就扔了的TransactionScope(在.Complete前使用()塊中您的SQL代碼() )你應該很好走?

相關問題