У меня есть следующий кусок кода для проверки подтверждений 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).