2

我正在研究将 MSMQ 用于我团队的新项目,但我需要知道我是否可以发送 MSMQ 消息并在 System.Transactions.TransactionScope 中执行 SQL 命令,并让它们一起提交或回滚。我在网上找不到一个可靠的来源,用代码示例说“是”。

我需要将一些消息发送到单个队列并在单个数据库中插入一些记录,但我需要一起成功或失败。

编辑:我无法在我的测试中实际验证这是否有效(我很快就完成了这项任务),但所有文档都指出 TransactionScope 确实在同一实例中捕获 MSMQ 消息和 SQL 命令。

4

1 回答 1

3

根据个人经验,我知道 TransactionScope 与 SQL 配合得很好。我对 MSMQ 不太熟悉,但快速的Google 搜索显示了一些看起来运行成功的示例(通常是论坛讨论)。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();  
}

只需将您的 SQL 代码放入 TransactionScope 的 using() 块中(在 .Complete() 之前),您就可以开始了吗?

于 2008-10-30T17:54:47.830 回答