activemq常见问题

#消息丢失
1.服务端丢失

消息持久化机制

2.客户端丢失
1)生产端丢失

failover:

队列已满时,生产者会一直阻塞:https://blog.csdn.net/soulmate_p/article/details/81380937

2)消费端丢失

消息确认机制:忘记确认将引起内存泄漏

消息重新投递机制RedeliveryPolicy

#消息重复
幂等性

#消息顺序

1.将顺序敏感的消息分配到一个队列,只设置一个消费者。

2.业务控制。

#利用Zookeeper实现ActiveMQ的高可用

Master/Slave broker的信息注册到ZK。
只有Master对外提供了服务,Slave是待机状态。
当Master出现故障,ZK内部的选举机制,会让一个Slave升级成Master对外提供服务。

1.配置Zookeeper的高可用
2.配置ActiveMQ的高可用(主从)
1)主从机器对外统一名称brokerName="localhost"
2)持久化配置
<persistenceAdapter>
    <!-- kahaDB -->
    <kahaDB directory="${activemq.data}/kahadb"/>
    
    <!-- replicatedLevelDB -->
    <replicatedLevelDB directory="${activemq.data}/leveldb"
    replicas="3"  //ActiveMQ集群节点数量,replicas="3"时,如果一个节点不可用还可用,如果两个节点不可用则不可用
    bind="tcp://0.0.0.0:62616"  //bind地址是ActiveMQ集群内部通信的TCP端口
    hostname="192.168.99.121"  //本机主机名称
    zkAddress="192.168.99.121:2181,192.168.99.122:2181,192.168.99.123:2181"  //zk集群列表
    zkPath="/activemq/mymq-leveldb-stores"/>  //zkPath下存放着ActiveMQ的节点
</persistenceAdapter>
3)Java端访问ActiveMQ的地址配置
<property name="brokerURL" value="failover:(tcp://192.168.99.121:61616,tcp://192.168.99.122:61616,tcp://192.168.99.123:61616)?Randomize=false" />


#ActiveMQ的高可用的集群

猜你喜欢

转载自blog.csdn.net/m0_37993453/article/details/82191213
今日推荐