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为例进行详细讲解。
$ /opt/activemq/bin/activemq –version
ActiveMQ 6.1.0
# 查看Broker状态
$ /opt/activemq/bin/activemq status
# 输出示例:
ActiveMQ Broker is running (PID: 12345)
1.2 环境规划
本次安装环境规划如下:
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环境检查
$ 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 创建用户和目录
# 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 配置环境变量
$ 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
$ /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
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 存储配置
# 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 -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 -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节点配置 (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配置
$ 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
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
8. 监控与日志
ActiveMQ提供了完善的监控和日志功能,本节介绍常用的监控配置方法。更多学习教程公众号风哥教程itpux_com
8.1 Web管理控制台
# 浏览器访问: http://192.168.1.51:8161/admin
# 主要功能:
# – 查看队列和主题
# – 发送和浏览消息
# – 查看连接和订阅
# – 查看网络连接
# – 管理用户和权限
# 配置管理控制台
$ vi /opt/activemq/conf/jetty.xml
8.2 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
# 创建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 高可用集群部署
# 共享存储配置(使用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
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
