При использовании транзакций в удаленном MSMQ появляется сообщение «Запрошенное сообщение не найдено в указанной очереди». Если транзакция удалена или очередь перемещена на тот же компьютер, все работает просто отлично. Очередь находится на компьютере с Windows 2008, а клиент (код показан ниже) работает на компьютере с Windows 7.
//Throws above error
using (MessageQueueTransaction mqTxn = new MessageQueueTransaction())
{
mqTxn.Begin();
Message message = messageQueue.ReceiveById(peekedMessage.Id, mqTxn);
mqTxn.Abort();
}
//Throws above error
using (TransactionScope txnScope = new TransactionScope())
{
Message message = messageQueue.ReceiveById(peekedMessage.Id, MessageQueueTransactionType.Automatic);
}
//Works fine
Message message = messageQueue.ReceiveById(peekedMessage.Id);
P.S. peekedMessage - сообщения, просматриваемые непосредственно перед этими вызовами. Я проверил, что peekedMessage.Id совпадает с первым элементом очереди. Очередь транзакционная.