我有一个系统,其中有一个 MSMQ 发送器(每秒生成约 10k 条消息)和一个 MSMQ 接收器(每秒 2k 条消息)。生成和发送消息很快,但读取和处理很慢。因此,我想放置一个负载平衡器并使用几个接收器。目前消息是 XML 格式的,一旦我解决了负载平衡问题,我计划转向二进制格式化程序。
问题:带有特定标签(或可能的内部 XML 标签值)的消息应始终发送给完全相同的接收者。服务器宕机的情况超出了本问题的范围(如果您知道如何处理这种情况,则有加分)。
我使用 HAProxy 进行其他循环 MSMQ 负载平衡,它在 TCP 模式下运行良好。我想知道我是否可以在这种情况下重用它。
问题:如何配置 HAProxy 以根据消息中的标签或 XML 格式的标签值对 MSMQ 消息进行负载平衡。具有相同标签的消息必须发送到固定接收方。还有其他选择吗?
样本:
message [Label="server1"] [XML BODY ...] => LB => server1
message [Label="server2"] [XML BODY ...] => LB => server2
或类似于 RabbitMQ 的“直接交换”
图片来源:pubs.vmware.com