c# - 将 MSMQ 消息发送到远程事务队列

标签 c# msmq msdtc transactional-queue

我是 MSMQ 的新手,正在尝试将 XML 消息发送到远程事务队列。两台机器都是2003服务器。我可以让它与非事务性远程队列一起工作。我似乎无法将消息放入事务队列。 C#代码如下。我没有收到错误,它只是从未出现过。

Message rqMessage = new Message();
System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer( typeof([message type]));

XmlTextWriter writer = new XmlTextWriter(rqMessage.BodyStream, Encoding.UTF8);
ser.Serialize(writer, rqDoc);
rqMessage.Label = "message label";
rqMessage.TimeToBeReceived = Message.InfiniteTimeout;
rqMessage.TimeToReachQueue = Message.InfiniteTimeout;
rqMessage.ResponseQueue = new MessageQueue("Path");
rqMessage.Formatter = new ActiveXMessageFormatter();
MessageQueue rqQueue = new MessageQueue(nodeRequestQueue.SelectSingleNode("Path").InnerText);

bool transactional = false;
try
{
    transactional = rqQueue.Transactional;
}
catch(MessageQueueException)
{
    transactional = false;
}
if ( transactional )
    rqQueue.Send(rqMessage, MessageQueueTransactionType.Single);
else
    rqQueue.Send(rqMessage);

最佳答案

您可以显式创建交易。

using (var transaction = new MessageQueueTransaction())
{
    transaction.Begin();
    rqQueue.Send(rqMessage, transaction);
    transaction.Commit();
}

对于您正在使用的重载,也许您没有“直接格式名称”并且该选项不受支持。 MSDN

关于c# - 将 MSMQ 消息发送到远程事务队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10557148/

相关文章:

c# - 程序化按钮单击引发 'System.StackOverflowException' 异常

c# - 无法从 NHibernate.Driver.OracleDataClientDriver 创建驱动程序

c# - 如何在 C#.NET 中更改 TabPage 位置?

c# - 如何检测项目文件夹中是否存在文件?

来自 Visual Studio 的 WCF MSMQ 服务

c# - 为什么 MassTransit 不将消息推送到 MSMQ,除非有订阅者?这是如何解决的?

c# - 使用 TransactionScope 的间歇性 System.ArgumentNullException

.net - 如何有效地检索所有私有(private) MSMQ 队列的名称?

c# - 远程交易

c# - MSDTC:与底层事务管理器的通信失败