我是MSMQ的新手。我们有一种情况,我们有许多c#应用程序(.exe)在端口上发送数据包。他们可以将数据包发送到端口。如何配置MSMQ以自动从端口读取并将这些数据包发布到MSMQ。我们不能放松任何这些数据包,因此根本不能接受数据丢失。如何有效地完成这项工作。可以将MSMQ配置为接受来自端口1801的数据包。如果我们写入不同端口的这些应用程序会更好吗?如果他们写入一个端口,那么如何使用NO DATA LOSS将这些消息直接发送到MSMQ。 我们希望队列是事务性的。我们不想使用到达的数据包。
请帮忙。任何可以完成此任务的示例代码都会有很大的帮助。
请注意,应用程序是用C#.NEt编写的。数据丢失和性能下降一直是个问题,我们正在尝试使用MSMQ解决它们。我们必须在MSMQ中看到来自这些应用程序的所有数据包。
谢谢
答案 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 WCF和Reliable Messaging with MSMQ and .NET
数据丢失和性能下降一直是个问题,我们正在努力 使用MSMQ解决它们。我们必须看到来自这些的所有数据包 MSMQ中的应用程序。
MSMQ本身既快又轻巧,但与其他所有工具一样,这一切都取决于你用它做什么 - 以及如何做。如果你开始发送大数据包,MSMQ也可能会遇到麻烦。请记住,MSMQ有一些限制,例如: for message size
以下是帮助您开始使用 WCF与MSMQ结合的文章/教程: