注:本次搭建 ActiveMQ 伪集群依赖 zookeeper 集群,请先搭建好 zookeeper 集群
一、规划 ActiveMQ 伪集群端口
主机IP:127.0.0.1
控制台端口:8161;8162;8163
集群通信端口:5151;5152;5153
消息端口:6161;6162;6163
zookeeper消息端口:2181;2182;2183
二、解压 apache-activemq-5.15.5-bin.zip 到指定目录
三、分别修改 conf 目录下的 jetty.xml 配置文件
D:\clustering-space\apache-activemq-5.15.5\apache-activemq-5.15.5-8161-5151-6161\conf\jetty.xml
...省略代码...
<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
<!-- the default port number for the web console -->
<property name="host" value="0.0.0.0"/>
<property name="port" value="8161"/>
</bean>
...省略代码...
D:\clustering-space\apache-activemq-5.15.5\apache-activemq-5.15.5-8162-5152-6162\conf\jetty.xml
...省略代码...
<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
<!-- the default port number for the web console -->
<property name="host" value="0.0.0.0"/>
<property name="port" value="8162"/>
</bean>
...省略代码...
D:\clustering-space\apache-activemq-5.15.5\apache-activemq-5.15.5-8163-5153-6163\conf\jetty.xml
...省略代码...
<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
<!-- the default port number for the web console -->
<property name="host" value="0.0.0.0"/>
<property name="port" value="8163"/>
</bean>
...省略代码...
四、分别修改 conf 目录下的 activemq.xml 配置文件
D:\clustering-space\apache-activemq-5.15.5\apache-activemq-5.15.5-8161-5151-6161\conf\activemq.xml
...省略代码...
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="activemq-cluster" dataDirectory="${activemq.data}">
...省略代码...
<persistenceAdapter>
<!--<kahaDB directory="${activemq.data}/kahadb"/>-->
<replicatedLevelDB
directory="${activemq.data}/leveldb"
replicas="3"
bind="tcp://0.0.0.0:5151"
zkAddress="127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183"
hostname="127.0.0.1"
zkPath="/activemq/leveldb-stores"/>
</persistenceAdapter>
...省略代码...
<transportConnectors>
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<transportConnector name="openwire" uri="tcp://0.0.0.0:6161?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
...省略代码...
</broker>
...省略代码...
D:\clustering-space\apache-activemq-5.15.5\apache-activemq-5.15.5-8162-5152-6162\conf\activemq.xml
...省略代码...
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="activemq-cluster" dataDirectory="${activemq.data}">
...省略代码...
<persistenceAdapter>
<!--<kahaDB directory="${activemq.data}/kahadb"/>-->
<replicatedLevelDB
directory="${activemq.data}/leveldb"
replicas="3"
bind="tcp://0.0.0.0:5152"
zkAddress="127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183"
hostname="127.0.0.1"
zkPath="/activemq/leveldb-stores"/>
</persistenceAdapter>
...省略代码...
<transportConnectors>
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<transportConnector name="openwire" uri="tcp://0.0.0.0:6162?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
...省略代码...
</broker>
...省略代码...
D:\clustering-space\apache-activemq-5.15.5\apache-activemq-5.15.5-8163-5153-6163\conf\activemq.xml
...省略代码...
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="activemq-cluster" dataDirectory="${activemq.data}">
...省略代码...
<persistenceAdapter>
<!--<kahaDB directory="${activemq.data}/kahadb"/>-->
<replicatedLevelDB
directory="${activemq.data}/leveldb"
replicas="3"
bind="tcp://0.0.0.0:5153"
zkAddress="127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183"
hostname="127.0.0.1"
zkPath="/activemq/leveldb-stores"/>
</persistenceAdapter>
...省略代码...
<transportConnectors>
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<transportConnector name="openwire" uri="tcp://0.0.0.0:6163?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
...省略代码...
</broker>
...省略代码...
五、启动脚本
activemq1.bat
title apache-activemq-5.15.5-8161-5151-6161
D:\clustering-space\apache-activemq-5.15.5\apache-activemq-5.15.5-8161-5151-6161\bin\activemq start
activemq2.bat
title apache-activemq-5.15.5-8162-5152-6162
D:\clustering-space\apache-activemq-5.15.5\apache-activemq-5.15.5-8162-5152-6162\bin\activemq start
activemq3.bat
title apache-activemq-5.15.5-8163-5153-6163
D:\clustering-space\apache-activemq-5.15.5\apache-activemq-5.15.5-8163-5153-6163\bin\activemq start
activemq-cluster.bat
@echo off
color 0A
@echo on
start activemq1.bat
start activemq2.bat
start activemq3.bat
@echo off
echo.
pause
@echo on