我们计划开发基于 Microsoft Message Queuing (MSMQ) 的高可用性系统。目前我们正在收集 MSMQ 的高可用性选项。我们计划使用 Windows Server 2008R2 作为底层操作系统。
有哪些特定技术可以使 MSMQ 服务具有高可用性?
我们研究了 Windows 故障转移群集和 NLB,但群集的故障转移时间似乎太长(超过 10 秒),并且 NLB 不支持事务消息传递。
是否有人使用过 VM Ware Fault Tolerance 或类似解决方案?您是否知道还有其他解决方案可以为 MSMQ 提供高可用性,同时支持低故障转移时间(< 5 秒)和事务消息传递?
答案1
您肯定会想要了解 Server 2008 集群功能。您可以配置消息队列服务应用程序以提供高可用性和容错能力。设置此功能的主要先决条件是拥有 SAN。
http://msdn.microsoft.com/en-us/library/dd897482(v=bts.10).aspx
此外,如果要详细了解如何进行设置,请访问 Microsoft 虚拟实验室: http://go.microsoft.com/?linkid=7091154
答案2
如果您需要的故障转移时间低于典型的 MSCS 时间(它们往往非常慢),请考虑使用 MSMQ over HTTP 设置 NLB。
这将解决可用性问题并可以扩展到数十个节点。
答案3
如果您需要 HA,恐怕 MSMQ 并不是一个好的解决方案。其他产品怎么样?我建议检查 RabbitMQ,它支持得很好,迁移也不是很麻烦。