У меня есть следующий фрагмент кода для проверки подтверждений 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», я получаю «тестовое» сообщение в этой удаленной очереди, но не подтверждаю получение очереди в локальной очереди администратора. .
Я не видел ничего, что указывало бы на то, что подтверждения не могут быть возвращены из удаленных очередей, поэтому я предполагаю, что есть проблема с моим кодом или моей средой. Любые идеи?
(Обе машины работают под управлением Windows 2003.)