4

我有一个将 MSMQ 消息发送到远程机器的程序。
这工作正常。

但是,在调试期间,我们将在许多不同的机器上运行程序,并且在远程服务器上接收到消息时出现问题,因为没有为我们的开发机器设置映射等。

我想做的是能够指定一台机器来发送 MSMQ 消息;具有所需映射的一个,因此远程机器将正确接收消息。

目前我使用此路径创建一个队列:FormatName:DIRECT=http://the.remote.machine.co.uk/msmq/frommycompany.

然后我通过创建消息对象并在事务中发送它们来发送消息。

如何将消息从运行程序的机器以外的机器发送到远程机器,以便远程机器可以正确接收消息?

4

2 回答 2

2

如果我正确理解了这个问题,我建议使用充当路由器的服务。

您可能希望使用WCF 服务,该服务首先由您的开发机器上的所有客户端调用,然后充当将消息发送到目标机器的唯一客户端。WCF 非常适合使用内置功能将消息发送到队列中。

或者 - 或组合 - 您可以考虑使用一些消息传递框架,例如NServiceBus,使您使用 MSMQ 的工作更加轻松。

NServiceBus 为您提供了很大的灵活性来配置您的消息应该去哪里以及应该订阅它们的人。大多数这可以简单地在应用程序配置文件中设置。

于 2012-07-13T14:57:07.797 回答
1

如果我理解您想要从机器一发送到机器 2 上的队列的问题。鉴于这是您想要做的尝试这个:

       System.Messaging.Message msg = new System.Messaging.Message();
        msg.Body = "This is a test message";
        msg.Label = "Test Message";
        msg.Formatter = new ActiveXMessageFormatter();

        MessageQueue queue = new MessageQueue("FormatName:DIRECT=OS:machine2\\Private$\\recievingQueue");

        queue.Send(msg);
于 2012-07-13T20:24:28.617 回答