MSMQ:传递到远程队列时未返回确认

时间:2009-06-10 13:05:39

标签: .net msmq

我有以下代码来测试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。)

2 个答案:

答案 0 :(得分:4)

@LievenCardoen& @marijne。

不确定这是否是您的原始问题,但确认队列不应该是事务性的。 如果是,您将不会收到任何确认消息,并且没有任何类型的错误消息将向您表明。我必须以艰难的方式学习这一点:)

干杯 约翰

答案 1 :(得分:2)

作为参考,我在两台机器上重新安装消息队列后,这种方法正常工作。