我有一个程序当前抛出 MSMQ事务尚未启动。如果使用此事务发送时没有任何警告或异常,MSQM会将消息抛出到deadletter队列中!异常。我不确定我做错了什么,所以有没有调试/记录消息队列事务的当前状态?
基本上,我目前得到了:
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();
}
答案 0 :(得分:2)
我已经“成功”在我的机器上重现了这个问题,但我必须承认,我对如何解决这个问题一无所知。
似乎MSMQ以某种方式参与环境事务处理,即使我注意手动创建MsmqTransaction
,我将其用于所有发送/接收操作。
我的信念是你曾指定MsmqTransactionMode.Auto
让MSMQ自动登记,我绝对相信我不会。
我会更多地探讨一下,我甚至可能会看到我是否可以让MSMQ停止这样做,但我不能保证我可以解决你的问题。
感谢您报告,并感谢您彻底复制。