Удаленный MSMQ, Сбой транзакций и ReceiveById - «Запрошенное сообщение не найдено в указанной очереди»

Я получаю сообщение об ошибке «Запрошенное сообщение не найдено в указанной очереди» при использовании транзакций в удаленном 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);

PS peekedMessage - это сообщения, просматриваемые непосредственно перед этими вызовами. Я проверил, что peekedMessage.Id совпадает с первым элементом очереди. Очередь транзакционная.

7
задан amit_g 8 December 2010 в 01:57
поделиться