ActiveMQ 安装与配置指南

Apache ActiveMQ 消息中间件完整安装配置教程

安装指南
配置说明
验证测试
准备工作
1 系统要求

在开始安装ActiveMQ之前,请确保您的系统满足以下要求:

  • Java 8或更高版本(推荐Java 11)
  • 至少1GB可用内存
  • 至少500MB磁盘空间
  • Linux/Windows/macOS操作系统
注意: 使用以下命令检查Java版本:
java -version
下载与安装
2 下载ActiveMQ

访问Apache ActiveMQ官方网站下载最新稳定版本:

# 使用wget下载(Linux/macOS)
wget https://archive.apache.org/dist/activemq/5.16.3/apache-activemq-5.16.3-bin.tar.gz

# 或者使用curl
curl -O https://archive.apache.org/dist/activemq/5.16.3/apache-activemq-5.16.3-bin.tar.gz
Windows用户可以直接从官网下载.zip文件并解压。
3 解压安装包

解压下载的安装包到您选择的目录:

# Linux/macOS
tar -xzf apache-activemq-5.16.3-bin.tar.gz
mv apache-activemq-5.16.3 /opt/activemq

# Windows
# 使用解压工具解压到C:\activemq等目录
4 设置环境变量(可选)

为了方便使用,可以设置ACTIVEMQ_HOME环境变量:

# Linux/macOS - 添加到~/.bashrc或~/.zshrc
export ACTIVEMQ_HOME=/opt/activemq
export PATH=$PATH:$ACTIVEMQ_HOME/bin

# Windows - 系统属性 > 高级 > 环境变量

应用更改:

source ~/.bashrc # Linux/macOS
启动ActiveMQ
5 启动ActiveMQ服务

根据您的操作系统选择启动方式:

# Linux/macOS
cd /opt/activemq/bin
./activemq start

# Windows
cd C:\activemq\bin
activemq start
成功启动后,您应该看到类似消息:"ActiveMQ started successfully"
6 验证服务运行

检查ActiveMQ是否正在运行:

# Linux/macOS
./activemq status

# 或者使用ps命令
ps aux | grep activemq
ActiveMQ默认监听以下端口:
- 61616: OpenWire协议端口
- 8161: 管理控制台HTTP端口
基本配置
1 访问管理控制台

ActiveMQ提供了一个基于Web的管理控制台:

http://localhost:8161/admin

默认凭据:

  • 用户名: admin
  • 密码: admin
安全警告: 在生产环境中务必更改默认凭据!
2 修改配置文件

主要配置文件位于conf目录:

  • activemq.xml - 主要配置(代理设置、传输连接器等)
  • jetty.xml - Web控制台配置
  • users.properties - 用户认证
  • credentials.properties - 加密凭据
3 更改管理员密码

编辑conf/users.properties:

# 格式: username=password
admin=mynewpassword
user=userpassword

编辑conf/jetty-realm.properties(如果存在):

# 格式: username: password [,rolename ...]
admin: mynewpassword, admin
user: userpassword, user
4 配置内存限制

编辑bin/env文件(Linux/macOS)或bin/activemq.bat(Windows):

# 设置JVM内存参数
ACTIVEMQ_OPTS="-Xms512M -Xmx1024M"
根据您的服务器资源调整这些值。生产环境通常需要更大的内存。
安全配置
5 启用SSL/TLS加密

1. 首先创建或获取SSL证书

2. 编辑conf/activemq.xml,在transportConnectors部分添加:

<transportConnector name="ssl" uri="ssl://0.0.0.0:61617?transport.needClientAuth=true"/>

3. 配置SSL参数在conf/activemq.xml中添加:

<sslContext>
  <sslContext keyStore="file:${activemq.conf}/broker.ks"
          keyStorePassword="password"
          trustStore="file:${activemq.conf}/broker.ts"
          trustStorePassword="password"/>
</sslContext>
6 配置网络访问限制

编辑conf/jetty.xml,限制管理控制台访问:

<property name="host" value="127.0.0.1"/> <!-- 只允许本地访问 -->
<!-- 或者指定IP范围 -->
<property name="connectors">
  <list>
    <bean id="Connector" class="org.eclipse.jetty.server.ServerConnector">
      <constructor-arg ref="Server"/>
      <property name="host" value="192.168.1.100"/>
    </bean>
  </list>
</property>
验证安装
1 访问Web控制台

打开浏览器访问:

http://localhost:8161/admin

成功登录后,您应该看到ActiveMQ的管理控制台,包含队列、主题、连接等信息。

2 命令行测试

ActiveMQ提供了命令行工具进行简单测试:

# 生产者发送消息
./activemq producer --destination queue://TEST --message "Hello ActiveMQ"

# 消费者接收消息
./activemq consumer --destination queue://TEST
3 Java客户端测试

创建一个简单的Java测试程序:

import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;

public class SimpleJMSTest {
  public static void main(String[] args) throws JMSException {
    ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
    Connection connection = factory.createConnection();
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    Queue queue = session.createQueue("TEST.QUEUE");

    // 生产者
    MessageProducer producer = session.createProducer(queue);
    TextMessage message = session.createTextMessage("Hello World!");
    producer.send(message);

    // 消费者
    MessageConsumer consumer = session.createConsumer(queue);
    connection.start();
    TextMessage received = (TextMessage) consumer.receive(5000);
    System.out.println("Received: " + received.getText());

    session.close();
    connection.close();
  }
}
故障排除
1 常见问题

无法启动ActiveMQ:

  • 检查Java是否安装并配置正确
  • 检查端口是否被占用(61616, 8161)
  • 查看logs/activemq.log获取详细错误信息

无法访问Web控制台:

  • 检查ActiveMQ是否正在运行
  • 检查防火墙设置是否允许8161端口
  • 检查conf/jetty.xml中的主机绑定设置
2 日志文件位置

ActiveMQ日志文件位于:

logs/activemq.log # 主日志文件
data/ # KahaDB存储目录
tmp/ # 临时文件