MSMQ: подтверждения не возвращаются при доставке в удаленную очередь - PullRequest
2 голосов
/ 10 июня 2009

У меня есть следующий кусок кода для проверки подтверждений MSMQ:

    static void Main(string[] args)
    {
        string queuePath = args[0];
        string ackQueuePath = args[1];
        MessageQueue queue = new MessageQueue(queuePath);
        MessageQueue ackQueue = new MessageQueue(ackQueuePath);
        Message message = new Message("Body text");
        message.Label = "test";
        message.Recoverable = true;
        message.TimeToReachQueue = new TimeSpan(0, 1, 0);
        message.TimeToBeReceived = new TimeSpan(1, 0, 0);
        message.AdministrationQueue = ackQueue;
        message.AcknowledgeType = AcknowledgeTypes.FullReachQueue;
        queue.Send(message, MessageQueueTransactionType.Single);
    }

Если queuePath и ackQueuePath являются локальными, то есть в формате ". \ Private $ \ queuename", я получаю "тестовое" сообщение в основной очереди и подтверждение очереди достижения в очереди администратора, как и ожидалось. Однако, если queuePath указывает на удаленную очередь, т. Е. Формат «FormatName: DIRECT = OS: MACHINENAME \ private $ \ queuename», я получаю сообщение «test» в этой удаленной очереди, но в локальной очереди администратора нет подтверждения достижения очереди. .

Я не видел ничего, указывающего на то, что подтверждения не могут быть возвращены из удаленных очередей, поэтому я предполагаю, что есть проблема с моим кодом или моей средой. Есть идеи?

(на обеих машинах установлена ​​Windows 2003).

Ответы [ 2 ]

4 голосов
/ 04 января 2012

@ LievenCardoen & @marijne.

Не уверен, что это была ваша первоначальная проблема, но очередь подтверждения не должна быть транзакционной. Если это так, вы не будете получать никаких подтверждающих сообщений, и нет никаких сообщений об ошибках, которые бы указывали вам это. Я должен был выучить это трудным путем:)

Приветствие Johan

2 голосов
/ 10 июня 2009

Для справки, это сработало должным образом после переустановки очереди сообщений на обеих машинах.

...