Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从其他计算机发送MSMQ消息_C#_.net_Msmq_Messaging - Fatal编程技术网

C# 从其他计算机发送MSMQ消息

C# 从其他计算机发送MSMQ消息,c#,.net,msmq,messaging,C#,.net,Msmq,Messaging,我有一个向远程机器发送MSMQ消息的程序。 这个很好用 但是,在调试期间,我们将在多台不同的机器上运行程序,在远程服务器上,由于没有为我们的开发机器设置映射等,因此接收消息时会出现问题 我想做的是能够指定一台机器来发送MSMQ消息;具有所需映射以便远程计算机正确接收消息的映射 当前,我使用以下路径创建队列:FormatName:DIRECT=http://the.remote.machine.co.uk/msmq/frommycompany 然后,我通过创建消息对象并在事务中发送它们来发送消息

我有一个向远程机器发送MSMQ消息的程序。
这个很好用

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

我想做的是能够指定一台机器来发送MSMQ消息;具有所需映射以便远程计算机正确接收消息的映射

当前,我使用以下路径创建队列:
FormatName:DIRECT=http://the.remote.machine.co.uk/msmq/frommycompany

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


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

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

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

可选的或组合的,您可以考虑使用一些消息传递框架,例如,这使得您的MSMQ工作更容易。


NServiceBus为您提供了很大的灵活性,可以配置消息应该发送到哪里以及谁应该订阅它们。大多数情况下,这可以简单地在应用程序配置文件中设置。

如果我理解您的问题,您希望从机器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);
我更喜欢代码解决方案,但如果这不可能,那么使用最小配置的东西可能可以将消息从dev机器路由到实时机器,然后发送到实时机器上(前提是在实时机器上运行的程序仍然可以正常工作)。