.net - MSMQ:传送到远程队列时未返回确认

标签 .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。)

最佳答案

@LievenCardoen 和@marijne。

不确定这是否是您最初的问题,但确认队列不应该是事务性的。 如果是这样,您将不会收到任何确认消息,并且不会有任何类型的错误消息向您表明这一点。我必须通过艰苦的方式才能学会这一点:)

干杯 约翰

关于.net - MSMQ:传送到远程队列时未返回确认,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/975435/

相关文章:

c# - 计算带宽

c# - 错误 "the exec task needs a command to execute"是什么意思?

.net-2.0 - .net 中的 MSMQ 作为服务

jms - ActiveMQ 和 MSMQ 之间的桥梁

c# - 有没有一种方法可以使用 TFS API 检索工作项列表,而无需查询其数据库?

.net - 如何使自己的 .NET dll 全局化?

asp.net - MSMQ 重启后状态不一致

c# - MSMQ 的主要优势

c# - 以编程方式(C#)检测队列不再能够接收消息的最佳方法是什么?

c# - 如何解决 Newtonsoft.JSON 依赖性问题?