通過集群實現消息隊列高可用。
消息隊列在項目中存儲訂單、郵件通知、數據分發等重要信息,故對消息隊列穩定可用性有高要求。
現在通過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&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp" uri="amqp://0.0.0.0:5673?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp" uri="stomp://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:1884?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ws" uri="ws://0.0.0.0:61615?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
掃碼關注公眾號