ActiveMQ HA 搭建

本文档详细介绍了如何下载和配置Apache ActiveMQ 5.16.2,包括修改brokerName、支持的通信协议、单机/多机HA部署策略(共享文件夹/数据库),以及Zookeeper配置。适合在分布式环境中部署和管理消息队列系统。

# ActiveMQ 5.16.2软件下载

>  [windows下载](https://www.apache.org/dyn/closer.cgi?filename=/activemq/5.16.2/apache-activemq-5.16.2-bin.zip&action=download),[linux下载](https://www.apache.org/dyn/closer.cgi?filename=/activemq/5.16.2/apache-activemq-5.16.2-bin.tar.gz&action=download)

# 通用配置修改

> 1、activemq.xml-修改 brokerName

``` java

<broker xmlns="http://activemq.apache.org/schema/core" brokerName="brokerA" dataDirectory="${activemq.data}">

```

> 2、activemq.xml-修改支持通信协议

``` java

<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:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>

            <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>

            <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>

            <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>

            -->

```

> 3、jetty.xml-修改admin启动端口

```java

 <bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">

             <!-- the default port number for the web console -->

        <property name="host" value="127.0.0.1"/>

        <property name="port" value="8161"/>

    </bean>

```

# 单机HA部署(共享文件夹)

> 1、每一个软件activemq.xml-共享文件夹配置

```java

 <persistenceAdapter>

            <kahaDB directory="D:\micro-component\activeMQ\mqcluster\mq1\apache-activemq-5.16.2\data\kahadb" />

        </persistenceAdapter>

```

# 多机HA部署(共享数据库)

> 1、mysql [数据驱动](https://gitee.com/fhz/active-mq-jdbc-dependency.git)jar导入activeMQ/lib

> 2、activemq.xml-配置数据库

```java

    <bean id="mysql-db" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>

        <property name="url" value="jdbc:mysql://10.159.0.0:13306/mq?relaxAutoCommit=true" />

        <property name="username" value="root"/>

        <property name="password" value="root" />

        <property name="maxActive" value="200"/>

        <property name="poolPreparedStatements" value="true"/>

        

    </bean>

```

> 3、activemq.xml-实例化配置

```java

        <persistenceAdapter>

            <jdbcPersistenceAdapter  dataSource="#mysql-db" />

        </persistenceAdapter>

```

# 多机HA部署(zookeeper)

> 配置描述

| 主机| 服务端口| 主从实例间的通讯端口(动态)| jetty控制台端口| 

| :-----| :-----| :-----| :-----|

|127.0.0.1|61616|tcp://0.0.0.0:0|8161|

|127.0.0.1|61617|tcp://0.0.0.0:0|8162|

|127.0.0.1|61618|tcp://0.0.0.0:0|8163|

> 2、activemq.xml-修改持久化策略

```

<!--

    replicas - 当前主从模型中的节点数,根据实际配置

    bind - 主从实例间的通讯端口。(可动态,可指定,动态如tcp://0.0.0.0,指定tcp://0.0.0.0:62626分别配置为62626、62627、62628)

    zkAddress - zookeeper应用的安装位置

    zkPath - ActiveMQ的主从信息保存在zookeeper中的什么目录

    hostname - ActiveMQ实例安装的实际linux主机名。可在 /etc/hosts 中进行配置,设置格式:ip 主机名

-->

<persistenceAdapter>

            <replicatedLevelDB

                         directory="${activemq.data}/levelDB"

                         replicas="3"

                         bind="tcp://0.0.0.0:0"

                         zkAddress="127.0.0.1:2181"

                         zkPath="/activemq/leveldb-stores"

                         hostname="10.159.110.0"

                />

        </persistenceAdapter>

```

### 如何搭建ActiveMQ集群 #### 创建多个ActiveMQ节点 为了构建一个可靠的ActiveMQ集群,需创建至少三个独立运行的ActiveMQ实例作为节点。这些节点共享相同的配置文件和数据目录设置[^1]。 #### 修改持久化机制 默认情况下,ActiveMQ采用KahaDB来保存消息记录。对于集群环境而言,建议更改为`replicatedLevelDB`以增强稳定性和性能。具体操作是在`ACTIVEMQ_HOME/conf/activemq.xml`中调整相应的参数[^4]: ```xml <broker> ... <persistenceAdapter> <!-- 使用Replicated LevelDB Store --> <replicatedLevelDB directory="${activemq.data}/leveldb" replicas="3" bind="tcp://0.0.0.0:61617" zkAddress="zk1:2181,zk2:2181,zk3:2181" hostname="this_host_name_or_ip"/> </persistenceAdapter> </broker> ``` 注意替换上述代码中的IP地址、端口号以及主机名等信息为实际环境中对应的值[^5]。 #### 启动Zookeeper服务 由于选择了基于ZooKeeper实现Leader选举和支持多副本同步复制功能的`replicatedLevelDB`方案,在此之前还需确保已成功安装并启用了ZooKeeper集群服务。通常推荐三台以上的服务器组成ZooKeeper集合体,以便提供更好的容错能力。 #### 连接至ActiveMQ集群 Java应用程序可以通过以下方式建立与ActiveMQ集群之间的连接[^3]: ```java // 导入必要的库 import org.apache.activemq.ActiveMQConnectionFactory; public class ActiveMqClusterConnection { public static void main(String[] args) throws JMSException { String brokerURL = "failover:(tcp://host1:61616,tcp://host2:61616,tcp://host3:61616)"; ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerURL); Connection connection = connectionFactory.createConnection(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 继续编写发送或接收消息的相关逻辑... } } ``` 以上即为完整的ActiveMQ集群搭建流程概述及其基本应用接口介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

woniyu123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值