我们正在考虑在我们的应用程序中使用MSMQ作为消息处理服务。我们想要的是 - 位于网络负载均衡器(NLB)后面的服务器群中的MSMQ,它在节点之间分配负载。我有以下问题,我在网上找不到任何指针。
1)我是否需要在所有节点中安装MSMQ? 2)如果是这样,当发送方应用程序向MSMQ发送消息时,它应该发送给所有节点吗? 3)如果对我的第二个问题的回答是肯定的,那么当客户端应用程序收到消息时,如何通知其他节点有关客户端收到的消息并随后从中删除?
非常感谢任何帮助/指示。
答案 0 :(得分:4)
以下是一些可能有用的博文:
Q1)我是否需要在所有节点中安装MSMQ?
A1)您需要在每台服务器上安装MSMQ,以便传送消息。
Q2)如果是这样,当发送方应用程序向MSMQ发送消息时,它应该发送给所有节点吗?
A2)这是一种负载平衡的方法,它将X消息发送到X节点,但只从1节点读取,丢弃其他副本。
另一种方法是发送到网络负载均衡器,该负载均衡器向一个随机选择的节点发送一条消息,尽管MSMQ非常粘,因此很难/不可能以这种方式对高容量进行负载均衡。
Q3)如果对我的第二个问题的回答是肯定的,那么当客户端应用程序收到消息时,如何通知其他节点有关客户端收到的消息并随后从中删除?
A3)这是你所建议的负载平衡类型的缺点。除非您的应用程序删除它或TimeToBeReceived计时器到期,否则MSMQ不会删除邮件。基本上,如果您需要避免重复的消息处理,则需要协调客户端应用程序。
干杯
John Breakwell