我有以下代码片段来测试 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”格式,我会在主队列中收到“test”消息,并按预期在管理队列中收到到达队列确认。但是,如果 queuePath 指向远程队列,即“FormatName:DIRECT=OS:MACHINENAME\private$\queuename”格式,我会在该远程队列中收到“test”消息,但在本地管理队列中没有到达队列确认.
我没有看到任何表明无法从远程队列返回确认的信息,因此我认为我的代码或环境存在问题。有任何想法吗?
(两台机器都是 Windows 2003。)