1

我有一个程序当前抛出MSMQ 事务尚未启动。如果使用此事务发送而没有任何警告或异常,MSQM 将把消息扔到死信队列中!例外。我不确定我做错了什么,所以无论如何要调试/记录消息队列事务的当前状态?

基本上,我目前得到:

DoSomething(); // may have problem here

using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted, Timeout = TransactionManager.DefaultTimeout }))
{
     // throws exception here, but I believe the above method does something wrong
     bus.Publish(new SomethingHappened(1, "test"));

     scope.Complete();
 }
4

1 回答 1

2

我已经“成功”地在我的机器上重现了这个问题,但我必须承认我对如何解决它一无所知。

似乎 MSMQ 以某种方式加入了环境事务,即使我注意MsmqTransaction手动创建一个用于所有发送/接收操作的操作。

我的信念是你让你指定MsmqTransactionMode.AutoMSMQ 自动登记,我绝对确定我没有。

我会再讨论一些,我什至可能会看看我是否可以让 MSMQ 停止这样的行为,但我不能保证我可以解决你的问题。

感谢您报告它,并感谢您的彻底复制。

于 2014-09-09T06:16:25.500 回答