zookeeper + LevelDB + ActiveMQ实现消息队列高可用

时间:2021-09-27 22:32:00

通过集群实现消息队列高可用。

消息队列在项目中存储订单、邮件通知、数据分发等重要信息,故对消息队列稳定可用性有高要求。

现在通过zookeeper选取activemq leader的形式实现当某个activemq节点出问题时,保证系统的可用性。

zookeeper做为服务选取器来选择activemq作为master。

开发环境将zoopkeeper zoo_sample.cfg拷贝并修改文件名称为zoo.cfg。

activemq 配置禁用kahadb启用LevelDB 其中 zkAddress="127.0.0.1:2181" 为上边zoopkeeper 配置

<!-- 不采用kahadb方式
  <persistenceAdapter>
  <kahaDB directory="${activemq.data}/kahadb"/>
  </persistenceAdapter>
  -->
  <persistenceAdapter>
  <replicatedLevelDB
  directory="${activemq.data}/leveldb"
  replicas="3"
  bind="tcp://0.0.0.0:0"
 zkAddress="127.0.0.1:2181"
  hostname="127.0.0.1"
 sync="local_disk"
 zkPath="/activemq/leveldb-stores"
 />
</persistenceAdapter>

如开发机器都在同一台机器可以修改下文端口来实现多个activemq在同一台电脑上启动

<transportConnectors>
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<transportConnector name="openwire" uri="tcp://0.0.0.0:61617?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp" uri="amqp://0.0.0.0:5673?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp" uri="stomp://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:1884?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ws" uri="ws://0.0.0.0:61615?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
</transportConnectors>