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