我需要在一个事务中接收、处理和发送消息。由于 MSMQ 不支持事务性远程接收,因此我使用 DTC。现在,我什至无法收到消息。这是我使用的代码:
string queueName = "trxwrite";
string serverName = "mqtest";
using (TransactionScope ts = new TransactionScope(TransactionScopeOption.RequiresNew))
{
MessageQueue mq = new MessageQueue(string.Format(@"FormatName:DIRECT=OS:{0}\{1}", serverName, queueName));
mq.Formatter = new XmlMessageFormatter(new[] {typeof (string)});
Message message = mq.Receive(MessageQueueTransactionType.Automatic);
ts.Complete();
}
- 队列是事务性的。
- DTC 在服务器上启用
mqtest
并配置为允许入站和出站。 - 防火墙设置为允许所有 MSMQ 和 DTC 请求。
我收到以下错误消息:无法导入交易。任何人都可以帮忙吗?此外,我的客户端计算机如何知道它应该使用服务器上的 DTC 进行事务处理?无法从我到目前为止找到的样本中分辨出来......