1. 首页 > 软件安装教程 > 正文

ActiveMQ安装配置-ActiveMQ消息队列安装配置_升级迁移详细过程

1. ActiveMQ概述与环境规划

Apache ActiveMQ是Apache软件基金会开发的开源消息中间件,实现了JMS(Java Message Service)规范。它具有高性能、高可用性和丰富的特性,广泛应用于企业级应用集成和异步通信场景。更多学习教程www.fgedu.net.cn

1.1 ActiveMQ版本说明

ActiveMQ目前主要版本为ActiveMQ Classic 6.1和ActiveMQ Artemis 2.33。本教程以ActiveMQ Classic 6.1为例进行详细讲解。

# 查看ActiveMQ版本
$ /opt/activemq/bin/activemq –version
ActiveMQ 6.1.0

# 查看Broker状态
$ /opt/activemq/bin/activemq status

# 输出示例:
ActiveMQ Broker is running (PID: 12345)

1.2 环境规划

本次安装环境规划如下:

主机名:fgedudb01.fgedu.net.cn
IP地址:192.168.1.51
JMS端口:61616
Web管理端口:8161
安装目录:/opt/activemq
数据目录:/data/activemq/data
日志目录:/data/activemq/logs
配置目录:/opt/activemq/conf

Java环境:
JDK版本:OpenJDK 17
JAVA_HOME:/usr/lib/jvm/java-17
JVM堆大小:2GB

1.3 ActiveMQ核心特性

主要特点:
1. JMS规范实现:完全支持JMS 1.1和JMS 2.0规范
2. 多协议支持:支持OpenWire、AMQP、STOMP、MQTT等
3. 持久化存储:支持KahaDB、LevelDB、JDBC等多种存储
4. 高可用性:支持Master/Slave和Network of Brokers
5. 消息可靠性:支持消息确认、持久化和事务
6. 集群支持:支持消息分发和负载均衡
7. 管理界面:提供Web管理控制台
8. 企业集成:支持Camel路由和Spring集成

2. 硬件环境要求与检查

在安装ActiveMQ之前,需要对服务器硬件环境进行全面检查。学习交流加群风哥微信: itpux-com

2.1 最低硬件要求

最低配置:
CPU:2核心
内存:2GB
磁盘:10GB

推荐配置(生产环境):
CPU:4核心以上
内存:8GB以上
磁盘:50GB以上

高吞吐量配置:
CPU:8核心以上
内存:16GB以上
磁盘:100GB以上SSD

2.2 Java环境检查

# 检查JDK版本
$ java -version
openjdk version “17.0.9” 9.0.4
OpenJDK Runtime Environment (Temurin-17.0.9+9) (build 17.0.9+9)
OpenJDK 64-Bit Server VM (build 17.0.9+9, mixed mode, sharing)

# 检查JAVA_HOME
$ echo $JAVA_HOME
/usr/lib/jvm/java-17

# 查看Java安装路径
$ which java
/usr/bin/java

2.3 系统环境检查

# 检查操作系统版本
# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.8 (Ootpa)

# 检查内存信息
# free -h
total used free shared buff/cache available
Mem: 15Gi 1.0Gi 13Gi 256Mi 1.0Gi 14Gi
Swap: 7Gi 0B 7Gi

# 检查磁盘空间
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/vg_system-lv_root 100G 5.0G 95G 5% /
/dev/mapper/vg_data-lv_data 500G 50G 450G 10% /data

2.4 内核参数配置

# 配置内核参数
# vi /etc/sysctl.d/99-activemq.conf

# 添加以下参数
# 文件描述符限制
fs.file-max = 65535

# 网络参数
net.core.somaxconn = 32768
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.ip_local_port_range = 1024 65535

# 使内核参数生效
# sysctl -p /etc/sysctl.d/99-activemq.conf

# 配置用户限制
# vi /etc/security/limits.conf

# 添加以下配置
activemq soft nofile 65535
activemq hard nofile 65535
activemq soft nproc 65535
activemq hard nproc 65535

3. ActiveMQ安装步骤

本节详细介绍ActiveMQ 6.1的安装过程。学习交流加群风哥QQ113257174

3.1 创建用户和目录

# 创建activemq用户
# groupadd -g 1008 activemq
# useradd -u 1008 -g activemq -d /opt/activemq -s /bin/bash activemq
# passwd activemq

# 创建目录
# mkdir -p /opt/activemq
# mkdir -p /data/activemq/{data,logs,tmp}

# 设置目录权限
# chown -R activemq:activemq /opt/activemq
# chown -R activemq:activemq /data/activemq

3.2 下载并安装ActiveMQ

# 切换到安装目录
# cd /usr/local/src

# 下载ActiveMQ 6.1
# wget https://archive.apache.org/dist/activemq/6.1.0/apache-activemq-6.1.0-bin.tar.gz

# 解压安装
# tar -xzf apache-activemq-6.1.0-bin.tar.gz -C /opt/

# 重命名目录
# mv /opt/apache-activemq-6.1.0 /opt/activemq

# 设置目录权限
# chown -R activemq:activemq /opt/activemq

# 验证安装
$ ls -la /opt/activemq/
总用量 0
drwxr-xr-x. 2 activemq activemq 4096 4月 4 10:00 bin
drwxr-xr-x. 2 activemq activemq 4096 4月 4 10:00 conf
drwxr-xr-x. 2 activemq activemq 4096 4月 4 10:00 lib
drwxr-xr-x. 2 activemq activemq 4096 4月 4 10:00 webapps

3.3 配置环境变量

# 配置activemq用户环境变量
$ vi ~/.bash_profile

# 添加以下内容
export ACTIVEMQ_HOME=/opt/activemq
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$ACTIVEMQ_HOME/bin:$JAVA_HOME/bin:$PATH

# 使配置生效
$ source ~/.bash_profile

# 验证环境变量
$ echo $ACTIVEMQ_HOME
/opt/activemq

3.4 配置ActiveMQ

# 编辑配置文件
$ vi /opt/activemq/conf/activemq.xml

# 修改broker名称

# 配置数据目录

# 配置管理端口

3.5 启动ActiveMQ

# 启动ActiveMQ
$ /opt/activemq/bin/activemq start

# 输出示例:
Starting ActiveMQ Broker…
ActiveMQ Broker started.

# 查看服务状态
$ /opt/activemq/bin/activemq status

# 输出示例:
ActiveMQ Broker is running (PID: 12345)

# 检查端口
$ netstat -tlnp | grep java
tcp6 0 0 :::61616 :::* LISTEN 12345/java
tcp6 0 0 :::8161 :::* LISTEN 12345/java
tcp6 0 0 :::5672 :::* LISTEN 12345/java

# 查看启动日志
$ tail -f /data/activemq/logs/activemq.log

# 输出示例:
2026-04-04 10:00:00,000 [main] INFO BrokerService – Apache ActiveMQ 6.1.0 (fgedu-broker, ID:fgedudb01-12345-1712205600000-0:1) is starting
2026-04-04 10:00:01,000 [main] INFO BrokerService – Apache ActiveMQ 6.1.0 (fgedu-broker, ID:fgedudb01-12345-1712205600000-0:1) started

3.6 配置防火墙

# 配置防火墙
# firewall-cmd –permanent –add-port=61616/tcp
success
# firewall-cmd –permanent –add-port=8161/tcp
success
# firewall-cmd –permanent –add-port=5672/tcp
success
# firewall-cmd –reload
success

# 访问管理界面
# 浏览器访问: http://192.168.1.51:8161/admin
# 默认用户名: admin
# 默认密码: admin

风哥提示:ActiveMQ默认使用admin/admin作为管理用户。生产环境建议修改默认密码并配置更严格的访问控制。

4. ActiveMQ参数配置

ActiveMQ参数配置是性能优化的关键步骤,直接影响系统性能。更多学习教程公众号风哥教程itpux_com

4.1 JVM配置

# 编辑启动脚本
$ vi /opt/activemq/bin/env

# 修改JVM参数
ACTIVEMQ_OPTS_MEMORY=”-Xms2g -Xmx2g”
ACTIVEMQ_OPTS=”-XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+ParallelRefProcEnabled”

# 或者编辑wrapper配置
$ vi /opt/activemq/bin/linux-x86-64/wrapper.conf

wrapper.java.initmemory=2048
wrapper.java.maxmemory=2048
wrapper.java.additional.1=-XX:+UseG1GC
wrapper.java.additional.2=-XX:MaxGCPauseMillis=200
wrapper.java.additional.3=-XX:+ParallelRefProcEnabled

# 重启服务
$ /opt/activemq/bin/activemq restart

4.2 Broker核心配置

# 编辑配置文件
$ vi /opt/activemq/conf/activemq.xml
















4.3 存储配置

# KahaDB存储配置(默认推荐)

# JDBC存储配置(用于持久化到数据库)


生产环境建议:根据服务器硬件配置合理调整内存和存储参数。建议使用KahaDB作为默认存储,性能优于JDBC。

5. 队列与消息管理

ActiveMQ提供了丰富的队列和消息管理功能,本节介绍常用的操作方法。from:www.itpux.com

5.1 创建队列和主题

# 使用管理界面创建
# 访问 http://192.168.1.51:8161/admin
# 点击 “Queues” -> “Create” -> 输入队列名称

# 使用命令行创建队列
$ curl -u admin:admin -d “body=Hello” http://192.168.1.51:8161/api/message/fgedu_queue?type=queue

# 使用JMX创建
$ /opt/activemq/bin/activemq-admin create –brokerurl tcp://192.168.1.51:61616 –queuename fgedu_queue

# 查看队列列表
$ curl -u admin:admin http://192.168.1.51:8161/api/jolokia/read/org.apache.activemq:type=Broker,brokerName=fgedu-broker/Queues

# 输出示例:
{
“request”: {
“mbean”: “org.apache.activemq:type=Broker,brokerName=fgedu-broker”,
“attribute”: “Queues”,
“type”: “read”
},
“value”: [
{
“objectName”: “org.apache.activemq:type=Broker,brokerName=fgedu-broker,destinationType=Queue,destinationName=fgedu_queue”,
“Name”: “fgedu_queue”
}
]
}

5.2 发送消息

# 使用curl发送消息
$ curl -u admin:admin -d “body=Hello ActiveMQ” http://192.168.1.51:8161/api/message/fgedu_queue?type=queue

# 输出示例:
Message sent

# 使用Java发送消息
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;

public class Producer {
public static void main(String[] args) throws Exception {
ConnectionFactory factory = new ActiveMQConnectionFactory(“tcp://192.168.1.51:61616”);
Connection connection = factory.createConnection();
connection.start();

Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue(“fgedu_queue”);
MessageProducer producer = session.createProducer(queue);

TextMessage message = session.createTextMessage(“Hello ActiveMQ”);
producer.send(message);

connection.close();
}
}

5.3 消费消息

# 使用curl消费消息
$ curl -u admin:admin http://192.168.1.51:8161/api/message/fgedu_queue?type=queue

# 输出示例:
Hello ActiveMQ

# 使用Java消费消息
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;

public class Consumer {
public static void main(String[] args) throws Exception {
ConnectionFactory factory = new ActiveMQConnectionFactory(“tcp://192.168.1.51:61616”);
Connection connection = factory.createConnection();
connection.start();

Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue(“fgedu_queue”);
MessageConsumer consumer = session.createConsumer(queue);

Message message = consumer.receive(5000);
if (message instanceof TextMessage) {
System.out.println(((TextMessage) message).getText());
}

connection.close();
}
}

6. 集群配置

ActiveMQ支持多种集群部署模式,本节介绍常用的集群配置方法。更多学习教程www.fgedu.net.cn

6.1 Master/Slave配置

# 共享存储Master/Slave配置
# Master节点配置 (fgedudb01)
$ vi /opt/activemq/conf/activemq.xml

# Slave节点配置 (fgedudb02)
# 使用相同的共享存储目录
# Slave会自动检测Master状态并在Master故障时接管

# 启动Master
$ /opt/activemq/bin/activemq start

# 启动Slave
$ /opt/activemq/bin/activemq start

# 输出示例:
ActiveMQ JMS Message Broker (fgedu-cluster) is waiting for database lock

6.2 Network of Brokers配置

# Broker1配置 (fgedudb01)
$ vi /opt/activemq/conf/activemq.xml




# Broker2配置 (fgedudb02)
$ vi /opt/activemq/conf/activemq.xml




# 查看网络连接状态
$ curl -u admin:admin http://192.168.1.51:8161/api/jolokia/read/org.apache.activemq:type=Broker,brokerName=broker1/NetworkConnectors

风哥提示:ActiveMQ集群推荐使用Master/Slave模式实现高可用。Network of Brokers适用于消息分发和负载均衡场景。

7. 安全配置

ActiveMQ提供了完善的安全框架,本节介绍常用的安全配置方法。学习交流加群风哥微信: itpux-com

7.1 配置用户认证

# 编辑用户配置文件
$ vi /opt/activemq/conf/users.properties

# 添加用户
admin=fgedu123,admin
fgedu_user=fgedu123,user
fgedu_producer=fgedu123,producer
fgedu_consumer=fgedu123,consumer

# 编辑组配置文件
$ vi /opt/activemq/conf/groups.properties

# 添加组
admins=admin
users=fgedu_user,fgedu_producer,fgedu_consumer
producers=fgedu_producer
consumers=fgedu_consumer

# 启用认证
$ vi /opt/activemq/conf/activemq.xml






# 重启服务
$ /opt/activemq/bin/activemq restart

7.2 配置授权

# 编辑配置文件
$ vi /opt/activemq/conf/activemq.xml



” read=”consumers” write=”producers” admin=”admins”/>
” read=”admins” write=”admins” admin=”admins”/>
# 生成证书
$ keytool -genkeypair -alias activemq -keyalg RSA -keysize 2048 \
-keystore /opt/activemq/conf/broker.ks \
-validity 365 -storepass fgedu123 -keypass fgedu123 \
-dname “CN=fgedudb01.fgedu.net.cn,OU=IT,O=FGedu,L=BJ,ST=BJ,C=CN”

# 导出证书
$ keytool -export -alias activemq \
-keystore /opt/activemq/conf/broker.ks \
-file /opt/activemq/conf/broker.crt -storepass fgedu123

# 创建信任库
$ keytool -import -alias activemq \
-file /opt/activemq/conf/broker.crt \
-keystore /opt/activemq/conf/client.ts \
-storepass fgedu123 -noprompt

# 配置SSL
$ vi /opt/activemq/conf/activemq.xml



# 重启服务
$ /opt/activemq/bin/activemq restart

生产环境建议:生产环境建议启用认证和授权,为不同应用分配独立的用户和权限。

8. 监控与日志

ActiveMQ提供了完善的监控和日志功能,本节介绍常用的监控配置方法。更多学习教程公众号风哥教程itpux_com

8.1 Web管理控制台

# 访问管理控制台
# 浏览器访问: http://192.168.1.51:8161/admin

# 主要功能:
# – 查看队列和主题
# – 发送和浏览消息
# – 查看连接和订阅
# – 查看网络连接
# – 管理用户和权限

# 配置管理控制台
$ vi /opt/activemq/conf/jetty.xml

8.2 JMX监控

# 启用JMX
$ vi /opt/activemq/conf/activemq.xml





# 使用jconsole连接
$ jconsole service:jmx:rmi:///jndi/rmi://192.168.1.51:1099/jmxrmi

# 使用命令行查看MBean
$ curl -u admin:admin http://192.168.1.51:8161/api/jolokia/list

# 输出示例:
{
“org.apache.activemq”: {
“type=Broker,brokerName=fgedu-broker”: {
“TotalMessageCount”: 100,
“TotalConsumerCount”: 10,
“TotalProducerCount”: 5,
“MemoryPercentUsage”: 10
}
}
}

8.3 日志配置

# 编辑日志配置
$ vi /opt/activemq/conf/log4j2.properties

# 日志级别
rootLogger.level=INFO
rootLogger.appenderRef.console.ref=Console
rootLogger.appenderRef.rolling.ref=RollingFile

# 控制台输出
appender.console.type=Console
appender.console.name=Console
appender.console.layout.type=PatternLayout
appender.console.layout.pattern=%d{ISO8601} %-5p [%t] %c{2} – %m%n

# 文件输出
appender.rolling.type=RollingFile
appender.rolling.name=RollingFile
appender.rolling.fileName=/data/activemq/logs/activemq.log
appender.rolling.filePattern=/data/activemq/logs/activemq.%d{yyyy-MM-dd}.log
appender.rolling.layout.type=PatternLayout
appender.rolling.layout.pattern=%d{ISO8601} %-5p [%t] %c{2} – %m%n
appender.rolling.policies.type=Policies
appender.rolling.policies.time.type=TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval=1

# 查看日志
$ tail -f /data/activemq/logs/activemq.log

# 输出示例:
2026-04-04 10:00:00,000 [main] INFO BrokerService – Apache ActiveMQ 6.1.0 started
2026-04-04 10:00:01,000 [main] INFO TransportConnector – Connector openwire started

风哥提示:生产环境建议配置日志轮转和归档策略。定期检查队列积压和消费者状态。

9. 升级与迁移

ActiveMQ升级和迁移是运维工作中的重要环节,需要仔细规划和执行。from:www.itpux.com

9.1 版本升级

# 检查当前版本
$ /opt/activemq/bin/activemq –version
ActiveMQ 6.1.0

# 备份配置和数据
$ cp -r /opt/activemq/conf /backup/activemq/conf_$(date +%Y%m%d)
$ cp -r /data/activemq/data /backup/activemq/data_$(date +%Y%m%d)

# 停止服务
$ /opt/activemq/bin/activemq stop

# 备份旧版本
$ mv /opt/activemq /opt/activemq-6.1.0.bak

# 下载新版本
# wget https://archive.apache.org/dist/activemq/6.2.0/apache-activemq-6.2.0-bin.tar.gz

# 解压安装
# tar -xzf apache-activemq-6.2.0-bin.tar.gz -C /opt/
# mv /opt/apache-activemq-6.2.0 /opt/activemq

# 恢复配置
$ cp -r /backup/activemq/conf_$(date +%Y%m%d)/* /opt/activemq/conf/

# 启动服务
$ /opt/activemq/bin/activemq start

# 验证版本
$ /opt/activemq/bin/activemq –version
ActiveMQ 6.2.0

9.2 数据迁移

# 导出消息数据
$ /opt/activemq/bin/activemq-admin export –brokerurl tcp://192.168.1.51:61616 –destination fgedu_queue –output /backup/activemq/export

# 导入消息数据
$ /opt/activemq/bin/activemq-admin import –brokerurl tcp://192.168.1.52:61616 –destination fgedu_queue –input /backup/activemq/export

# 迁移KahaDB数据
# 1. 停止源Broker
$ /opt/activemq/bin/activemq stop

# 2. 复制数据目录
$ scp -r /data/activemq/data/kahadb new-server:/data/activemq/data/

# 3. 在新服务器启动Broker
$ /opt/activemq/bin/activemq start

生产环境建议:升级前必须进行完整备份。建议先在测试环境验证兼容性,确保消息不丢失。

10. 生产环境实战案例

本节提供一个完整的生产环境配置案例,帮助读者更好地理解ActiveMQ的实际应用。更多学习教程www.fgedu.net.cn

10.1 生产环境完整配置

# 生产环境完整配置
$ vi /opt/activemq/conf/activemq.xml






















” read=”admins” write=”admins” admin=”admins”/>



# 创建systemd服务
$ vi /etc/systemd/system/activemq.service

[Unit]
Description=Apache ActiveMQ
After=network.target

[Service]
Type=forking
User=activemq
Group=activemq
ExecStart=/opt/activemq/bin/activemq start
ExecStop=/opt/activemq/bin/activemq stop
Restart=on-failure

[Install]
WantedBy=multi-user.target

# 启用服务
# systemctl enable activemq
# systemctl start activemq

10.2 高可用集群部署

# 三节点Master/Slave集群

# 共享存储配置(使用NFS)
# 挂载共享存储
$ mount -t nfs 192.168.1.100:/data/activemq /data/activemq/shared

# 所有节点使用相同配置
$ vi /opt/activemq/conf/activemq.xml

# 客户端故障转移配置
failover:(tcp://192.168.1.51:61616,tcp://192.168.1.52:61616,tcp://192.168.1.53:61616)?randomize=true&priorityBackup=true

10.3 性能调优实战

# 操作系统优化
# vi /etc/sysctl.d/99-activemq.conf

# 网络优化
net.core.somaxconn = 32768
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30

# 使配置生效
# sysctl -p /etc/sysctl.d/99-activemq.conf

# JVM优化
$ vi /opt/activemq/bin/env

ACTIVEMQ_OPTS_MEMORY=”-Xms4g -Xmx4g”
ACTIVEMQ_OPTS=”-XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ParallelRefProcEnabled”

# 性能测试
$ /opt/activemq/bin/activemq-perf producer –broker tcp://192.168.1.51:61616 –destination queue://fgedu_perf –messageSize 1024 –messageCount 100000

# 输出示例:
Throughput: 50000.0 msg/s
Latency: avg=2.0ms, max=50.0ms

风哥提示:ActiveMQ作为经典的消息中间件,在企业应用集成中广泛使用。建议根据业务场景选择合适的持久化策略和集群模式。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息