.net - 是否可以在 TransactionScope 中执行 SQL 命令并发送 MSMQ 消息?

标签 .net sql transactions msmq

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

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

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

最佳答案

从个人经验来看,我知道 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() block 中(在 .Complete() 之前),就可以开始了?

关于.net - 是否可以在 TransactionScope 中执行 SQL 命令并发送 MSMQ 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/251050/

相关文章:

c# - 检查一个字符串是否可以由C#中另一个字符串的字符组成

c# - DateTime.ToString 从所有格式到 dd/MM/YYYY?

sql - F# 从 CSV 生成 SQL

php - 比特币钱包交易回调

python - Django 保存点回滚捕获完整性错误导致 TransactionManagementError

C# - 从组合框中检索选定的值

.net - 如何连接到内存中的共享缓存数据库?

java - 如何解决 Java 中的事务日志?

mysql - SQL - 创建表时出现 "Default"- 是否有必要?

sql - Django select_related() 用于使用模型和过滤器进行多连接查询