从端口到MSMQ的数据包

时间:2012-08-13 13:36:24

标签: c# .net msmq

我是MSMQ的新手。我们有一种情况,我们有许多c#应用程序(.exe)在端口上发送数据包。他们可以将数据包发送到端口。如何配置MSMQ以自动从端口读取并将这些数据包发布到MSMQ。我们不能放松任何这些数据包,因此根本不能接受数据丢失。如何有效地完成这项工作。可以将MSMQ配置为接受来自端口1801的数据包。如果我们写入不同端口的这些应用程序会更好吗?如果他们写入一个端口,那么如何使用NO DATA LOSS将这些消息直接发送到MSMQ。  我们希望队列是事务性的。我们不想使用到达的数据包。

请帮忙。任何可以完成此任务的示例代码都会有很大的帮助。

请注意,应用程序是用C#.NEt编写的。数据丢失和性能下降一直是个问题,我们正在尝试使用MSMQ解决它们。我们必须在MSMQ中看到来自这些应用程序的所有数据包。

谢谢

2 个答案:

答案 0 :(得分:0)

如何配置MSMQ以自动从端口读取

除非你准备编写代码我不认为这是可能的。因此,假设您不介意自己的一些代码,请查看System.Messaging.Message类。 Body属性允许您发送一个字节数组。

所以假设你正在从端口读取某种字节数组,将它放入消息应该是一个轻而易举的事。

答案 1 :(得分:0)

  

如何有效地完成这项工作。可以将MSMQ配置为接受   端口1801的数据包。   如果这些应用程序我们写入不同的端口将是   更好?

1801已经是MSMQ TCP 数据包的默认端口,请参阅MSDN文章TCP ports, UDP ports, and RPC ports that are used by Message Queuing

如果您的端口号确实很重要,您可以将WCF服务配置为侦听其address部分服务配置中的某些端口。

使用MSMQ时,通常不需要处理任何特殊端口,除非通过防火墙配置多个网络之间的通信(MSDN文章:How To Configure a Firewall for MSMQ Access)。

如果可能,我建议坚持使用默认值。

  

如何使用NO DATA LOSS将这些消息直接发送到MSMQ。   我们希望队列是事务性的。

如果使用事务性队列,则可以自动保护邮件以防止数据丢失。有关详情,请参阅Queuing in WCFReliable Messaging with MSMQ and .NET

  

数据丢失和性能下降一直是个问题,我们正在努力   使用MSMQ解决它们。我们必须看到来自这些的所有数据包   MSMQ中的应用程序。

MSMQ本身既快又轻巧,但与其他所有工具一样,这一切都取决于你用它做什么 - 以及如何做。如果你开始发送大数据包,MSMQ也可能会遇到麻烦。请记住,MSMQ有一些限制,例如: for message size

以下是帮助您开始使用 WCF与MSMQ结合的文章/教程: