我正在研究WCF / MSMQ。
有谁知道如何处理MSMQ的减少?我的理解是队列位于服务器上,但如果服务器出现故障并且无法恢复,那么如何阻止消息丢失呢?
关于这个主题的任何好文章?
答案 0 :(得分:6)
有一篇关于在企业here中使用MSMQ的文章。
提示8是您应阅读的内容。
“使用Microsoft的Windows群集工具,如果其中一个队列服务器计算机停止正常运行,队列将从一台计算机故障转移到另一台计算机。故障转移过程将队列及其内容从故障计算机移动到备份计算机.Microsoft的群集工作正常,但根据我的经验,很难正确配置并经常出现故障。此外,要运行Microsoft的Cluster Server,您还必须运行Windows Server Enterprise Edition - 一个昂贵的操作系统来进行许可。这些问题一起需要搜索替换。
使用Microsoft Cluster Server的一种替代方法是使用第三方IP负载平衡解决方案,其中有几种是商用的。这些设备像标准网络交换机一样连接到您的网络,一旦配置,就可以在配置的设备之间平衡IP会话。要对MSMQ进行负载平衡,您只需在负载平衡设备上设置虚拟IP地址,并将其配置为负载平衡端口1801.要连接到MSMQ队列,发送应用程序指定负载平衡托管的虚拟IP地址然后,设备会在托管接收应用程序的已配置计算机上有效地分配负载。这不仅可以增加您可以处理的消息的容量(通过让您只需向服务器场添加更多计算机),而且还可以保护您免受因服务器故障导致的停机事件的影响。
要使用硬件负载平衡器,您需要在配置为用于负载平衡的每台服务器上创建相同的队列,让负载均衡器将发送应用程序连接到组中的任何一台计算机。要添加额外的健壮性层,您还可以配置所有接收应用程序以监视组中所有其他计算机的队列,这有助于防止一台或多台计算机不可用时出现问题。在远程计算机上进行此类队列监视的成本很高(从本地队列读取消息几乎总是更有效),但额外的可用性水平可能是值得的。“
答案 1 :(得分:1)
不要嘲笑,但你回答了自己的问题。如果服务器不可恢复,则无法恢复消息。
话虽这么说,您可能需要定期备份消息文件夹。此TechNet文章将告诉您如何执行此操作:
http://technet.microsoft.com/en-us/library/cc773213.aspx
此外,它不会备份快递消息,因此您必须注意这一点。
如果您愿意,您可能希望在收到数据时将实际消息存储在数据库中,并使服务成为生产者/消费者模式中的消费者。