Мне нужно получить, обработать и отправить сообщение в одной транзакции. Поскольку MSMQ не поддерживает Transactional Remote Receive, для этого я использую DTC. Прямо сейчас, я даже не могу получить сообщение. Вот код, я использую для этого:Распределенная транзакция 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 на сервере для транзакции? Не могу сказать по образцам, которые я нашел до сих пор ...