将MSMQ MEssage发送到远程事务性队列

时间:2012-05-11 19:01:02

标签: 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);

1 个答案:

答案 0 :(得分:4)

您可以明确创建交易。

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

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

相关问题