【问题标题】:Is it possible to execute SQL commands and send MSMQ messages in a TransactionScope?是否可以在 TransactionScope 中执行 SQL 命令并发送 MSMQ 消息?
【发布时间】:2008-10-30 17:29:26
【问题描述】:

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

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

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

【问题讨论】:

  • 我不知道答案,但肯定不会很难将一些单元测试组合在一起来验证这一点?

标签: .net sql transactions msmq


【解决方案1】:

根据个人经验,我知道 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();  
}

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

【讨论】:

    猜你喜欢
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多