客户端 – 服务器 – 用于服务器到客户端通信的MSMQ

我们正在寻找MSMQ持久的“推送”服务器到客户端通信.每台服务器最多可以有1000个客户端.

在我们的一个测试中,我们向300个离线客户端发送了一条小消息,然后向在线客户端发送了一条消息.由于MSMQ通过无法传递的消息(通过MMC观察),最后一条消息被延迟了40多分钟.
我们还使用MSMQ作为它运行良好的返回路径.

有没有办法通过减少尝试连接到脱机主机的时间来使MSMQ符合这种使用模式?
如果没有,是否有其他排队产品更合适,还是自己动手?原始吞吐量不是优先级,而是传出队列的数量和可预测性/最大延迟,以及客户端(可能是相当旧的机器)上的内存占用量.

最佳答案 您可以通过禁用日记功能并使邮件不可恢复来提高性能…如果您不关心邮件丢失.

对脱机方案的快速修复可能是增加MSMQ可用的线程数,每个传出队列使用一个线程.每次脱机连接尝试都需要一段时间,阻塞线程. http://technet.microsoft.com/en-us/library/cc957498.aspx尝试尽可能多地投掷线程.

我的同行已经与ActiveMQ合作,并表示它在表现更好的同时更灵活.我没有亲自使用它,但如果你不依赖于.Net,我会调查它.

点赞