2009-01-30 148 views
2

我正在研究WCF/MSMQ。MSMQ冗余

有谁知道如何处理与MSMQ的减少?我的理解是,队列位于服务器上,但如果服务器出现故障并且无法恢复,如何防止邮件丢失?

关于此主题的任何好文章?

回答

6

关于在企业中使用MSMQ here有一篇很好的文章。

提示8是你应该阅读的。

“使用微软的Windows群集工具,如果其中一台队列服务器机器停止正常运行,队列将从一台机器故障转移到另一台机器,故障转移进程将队列及其内容从故障机器移至备用机器。但根据我的经验,很难正确配置和发生故障,另外,为了运行Microsoft的Cluster Server,您还必须运行Windows Server Enterprise Edition - 这是一个昂贵的操作系统,可以进行许可。

使用Microsoft Cluster Server的一种替代方法是使用第三方IP负载平衡解决方案,其中有几种可以在市场上买到,这些设备连接到您的网络ork就像标准的网络交换机一样,一旦配置完成,就可以在配置的设备间负载均衡IP会话。为了对MSMQ进行负载均衡,您只需在负载平衡设备上设置虚拟IP地址,并将其配置为负载平衡端口1801.要连接到MSMQ队列,发送应用程序会指定由负载平衡托管的虚拟IP地址设备,该设备然后在承载接收应用程序的配置机器上高效地分配负载。这不仅增加了您可以处理的消息的容量(通过让您只需将更多计算机添加到服务器场),还可以保护您免受服务器故障导致的停机事件的影响。

要使用硬件负载平衡器,需要在每个配置为用于负载平衡的服务器上创建相同的队列,让负载平衡器将发送应用程序连接到组中的任何一台计算机。要添加额外的健壮性层,您还可以配置所有接收应用程序以监视组中所有其他计算机的队列,这有助于防止在一台或多台计算机不可用时出现问题。在远程计算机上进行这种队列监视的成本很高(从本地队列中读取消息几乎总是更有效),但额外的可用性水平可能是值得的。“

1

不是讽刺,而是你如果服务器不可恢复,则无法恢复消息

这就是说,您可能需要定期备份消息文件夹。本TechNet文章会告诉您如何执行它:

http://technet.microsoft.com/en-us/library/cc773213.aspx

而且,它不会备份快递messag这是你必须注意的事情。

如果您愿意,您可能希望将收到时用于处理的实际消息存储在数据库中,并使服务成为生产者/消费者模式中的消费者。