Отправка сообщения MSMQ в удаленную транзакционную очередь

Я новичок в 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 ответ

Вы можете создать транзакцию явно.

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

Для используемой вами перегрузки, возможно, у вас нет "прямого имени формата", и эта опция не поддерживается. MSDN

Другие вопросы по тегам