我现在在一台服务器上运行一个使用事务私有队列 (msmq/wcf) 的解决方案。Windows 服务使用并处理队列上的消息,而 Web 应用程序层将消息推送到队列。
我们正在转向 IP 负载平衡配置(循环、两台服务器、单个虚拟地址),并且无需维护每个节点之间的消息顺序。因此,在正常情况下,只需复制堆栈(Web 应用程序、服务、队列)即可。但我更喜欢一组虚拟队列,这样如果任何节点发生故障,消息就不会丢失或长时间延迟。
我对 MSMQ 并不陌生,但之前从未像这样为多台服务器配置过它。有什么建议不需要重新配置服务器吗?我需要坚持使用负载平衡配置。
答案1
您无法轻松实现事务队列的负载平衡。您需要确保 MSMQ 主机接收包含发送方而非负载平衡器(如果您正在使用)的 IP 地址的消息。如果您使用 DNS 进行负载平衡,那么可能不是问题,尽管 MSMQ 非常棘手,会破坏负载平衡。
石油和水-MSMQ事务消息和负载平衡:
http://blogs.msdn.com/b/johnbreakwell/archive/2008/11/18/oil-and-water-msmq-transactional-messages-and-load-balancing.aspx