前面文章《Apache ActiveMQ 负载均衡 》在最后有提到一个场景,就是当AMQ的节点数大于2个的时候(HA + LB),且配置了消息回流的情况下的一些问题。
HA + LB的基本结构如下图:
问题即发生在当生产者将消息投递到Master节点后(AMQ SERVER),消费者与A节点建立连接(Broker),根据AMQ的“预先消费”策略预先消费了一定数量的消息,即A节点消费了Master节点的一部分消息,A节点在将消息转发至消费者Consumer。
消费者在消费过程中,A节点意外宕机,消费者根据failover机制会自动连接至B或C节点,想继续消费剩余的消息(A节点未消费完成的消息)。
那么我们可以按如下的配置方式即可解决该场景下的问题:
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.x

本文深入探讨了在Apache ActiveMQ中,当节点超过2个并启用高可用性和负载均衡时,遇到的消息回流问题。当生产者发送消息到Master节点,消费者与一个节点(Broker A)建立连接并预消费部分消息。如果A节点故障,消费者通过failover机制切换到B或C节点,如何确保能继续消费未完成的消息。文章提出了相应的配置解决方案。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



