Apache ActiveMQ 6.3 介绍与选型指南

Apache ActiveMQ 6.3.2(2026-08-29 发布)的定位、多协议消息架构、官方快速上手与同类消息中间件选型对比。

Apache ActiveMQApache消息队列JavaArtemisKafkaRabbitMQ2026/10/18

Apache ActiveMQ 6.3 介绍与选型指南

目标:讲清 Apache ActiveMQ Classic(下文简称 ActiveMQ)是什么、解决什么问题、由哪些组件构成、支持哪些协议与存储,以及在 2026 年 10 月当前版本(6.3.2)下的同类消息中间件选型对比。本文为 A1 认知篇:全部内容基于官方发行页、官方文档与 GitHub Release 联网查证编写,关键论断随文标注来源与查询日期(统一为 2026-10-18),不含本地安装实测。

一、信息基准

项目内容
查询日期2026-10-18
版本依据GitHub apache/activemq 仓库 releases/latest 返回 activemq-6.3.2(发布于 2026-08-29);ASF 官方发行目录 https://downloads.apache.org/activemq/ 当前在架 6.3.2/、6.2.10/、5.19.11/ 三个系列
系列状态官方下载页《Summary Table of ActiveMQ Series Status》标注:6.2.x 为 Stable - Supported(最新补丁 6.2.4,2026-04-08);5.19.x 为 Stable - Supported;6.1.x 及以下 6.x 系列、5.18.x 及以下 5.x 系列均为 Deprecated(该页快照可能滞后,6.3.2 已于 2026-08-29 正式发布并上架官方发行目录)
许可证Apache License 2.0(GitHub apache/activemq 仓库 license 字段:Apache-2.0)
运行语言/依赖Java。6.2.x 系列要求 Java [17,23),Spring 6.2.16、Jetty 11.0.26;6.3.2 发布说明显示已升级至 Spring 7.0.9、Jetty 12.1.12(来源:官方下载页 Schedule & Status 表与 6.3.2 Release Notes)

官方来源清单:

二、软件概述

Apache ActiveMQ Classic 是 ASF 旗下历史最悠久的开源消息中间件之一,是一款「快速而强大的消息代理(Message Broker)」,支持多语言客户端与多种线路协议,并提供众多高级特性(来源:projects.apache.org 项目描述,查询日期 2026-10-18)。它完整实现了 JMS 规范:5.x 系列面向 Javax JMS 1.1,6.x 系列面向 Jakarta JMS 2/3.1(部分兼容)(来源:官方下载页 Schedule & Status 表)。

ActiveMQ 属于 Apache ActiveMQ 项目族中的「Classic(经典)」线。项目族另有面向下一代架构的 Apache Artemis(原 ActiveMQ Artemis,2026 年起已独立为 apache/artemis 仓库与 artemis.apache.org 站点),官方文档长期建议新项目优先评估 Artemis;Classic 线仍在持续发版(6.3.2 发布于 2026-08-29),适合存量 JMS 应用与经典部署形态的延续使用。

本次介绍的版本:ActiveMQ Classic 6.3.2(2026-08-29 发布,GitHub Release 与官方发行目录一致)。

三、核心架构

3.1 总体形态

ActiveMQ 是一个以 Java 运行的独立 Broker 进程,核心结构为:

  • 传输层(Transports/Connectors):以 URI 方式配置多种连接器,常用协议包括 OpenWire(原生协议)、AMQP、MQTT、STOMP 与 WebSocket;客户端通过 ActiveMQConnectionFactory 与连接 URL 接入(来源:官方文档《Configuring Transports》《Initial Configuration》)。
  • 消息引擎(Broker):负责目的地(Queue/Topic)管理、消息路由、持久化分发、事务与安全(插件式认证授权)。
  • 存储层(Persistence):默认内置 KahaDB 文件存储;亦支持 JDBC 存储到关系库、以及不持久化的纯内存模式,满足从开发到生产的各级需求(来源:官方文档《Persistence》)。
  • Web 控制台(Web Console):内嵌 Jetty,默认 8161 端口,提供队列/主题/连接的查看、发送测试消息等管理能力,默认账号 admin/admin(来源:官方文档《Web Console》)。
  • 管理接口:提供 JMX 支持查看运行状态(来源:Getting Started《Monitoring ActiveMQ Classic》)。

3.2 高可用与扩展

  • Shared Storage Master/Slave:多个 broker 通过共享文件系统/JDBC 抢锁实现主备,同一时刻只有一个 master 提供服务。
  • Network of Brokers(代理网络):多 broker 之间通过 duplex/static 网络桥接互联,实现跨机房消息转发与负载分摊;6.3.2 发布说明中即包含对 network bridge 关闭行为的修复(来源:6.3.2 Release Notes,GitHub)。
  • 嵌入式运行:可将 broker 以嵌入式方式内嵌进 JMS 应用进程,避免独立部署(来源:官方文档《How do I embed a Broker inside a Connection》)。

四、功能特性

  • 多协议接入:OpenWire、AMQP 1.0、MQTT、STOMP、WebSocket 一套 broker 同时提供,跨语言客户端(Java/C/C++/Python/Go 等社区客户端均有覆盖)。
  • JMS 规范兼容:6.x 支持 Jakarta JMS 2/3.1(部分),5.19.x 支持 Javax JMS 1.1 并可搭配 Jakarta 客户端,便于存量应用平滑衔接。
  • 两种消息模型:Queue(点对点,负载均衡)与 Topic(发布订阅),支持持久订阅。
  • 可靠投递:持久化消息、事务会话、ACK 多种模式、死信队列(DLQ)、消息过期与优先级。
  • 企业集成能力:与 Apache Camel 同源生态(6.3.2 依赖升级中即包含 camel 4.22),支持虚拟目的地、复合目的地、通配符订阅、消息组、延迟投递、调度消息等高级特性。
  • 安全可插拔:认证授权通过 JAAS/插件机制配置,支持 Web 控制台与 JMX 管理。
  • 监控面:Web 控制台 + JMX + 统计插件,亦可对接 Prometheus 等采集(经 JMX 导出)。

五、快速上手(引自官方文档,非本地实测)

以下步骤引自官方 Getting Started(Unix Binary Installation + Starting/Testing 节,来源:https://activemq.apache.org/components/classic/documentation/getting-started ,查询日期 2026-10-18):

  1. 下载并解压二进制发行包:
wget http://activemq.apache.org/path/tofile/apache-activemq-x.x.x-bin.tar.gz
cd [activemq_install_dir]
tar zxvf activemq-x.x.x-bin.tar.gz
  1. 启动 Broker(Unix,守护方式):
cd [activemq_install_dir]/bin
./activemq start
  1. 验证安装——打开管理界面 http://127.0.0.1:8161/admin/(默认账号 admin/admin),导航到「Queues」创建队列并点击「Send to」发送测试消息;Broker 正常启动时日志(data/activemq.log)会出现类似如下行:
Apache ActiveMQ x.x.x (localhost, ID:...) started | org.apache.activemq.broker.BrokerService | main
  1. 确认监听端口:ActiveMQ Classic 默认端口为 61616,可用 netstat -nl | grep 61616 检查(来源同上《Listen port》节)。
  2. 停止 Broker:
cd [activemq_install_dir]/bin
./activemq stop

六、适用场景与限制

适用场景:

  • 存量 JMS(Javax/Jakarta)应用的吞吐型队列/主题承载,尤其是从 5.x 平滑升级到 6.x 的组织。
  • 需要同时服务多种协议客户端(OpenWire/AMQP/MQTT/STOMP)的统一消息接入层。
  • 与 Spring/Camel 体系深度集成的企业集成(EIP)场景。
  • 需要嵌入式 broker 或中小规模主备高可用的单体应用/子系统。

限制:

  • Classic 线代码基线较老,官方生态的重心(及性能演进)更多在 Artemis;新项目应先评估 Artemis 再决定是否选 Classic。
  • 6.3.2 尚未出现在官方下载页的系列状态表中(页面快照滞后),生产选型时需自行核对 6.3.x 系列状态与补丁节奏。
  • 与 Kafka/Pulsar 类分布式日志型系统相比,Classic 面向传统队列语义,不擅长超大规模流式回放与分区并行消费。

七、同类选型对比

对比数据联网实查于 2026-10-18(GitHub API 与官方发行目录/官网):

维度Apache ActiveMQ Classic 6.3.2Apache Artemis 2.57.0RabbitMQ 4.3.6Apache Kafka 4.4.0
许可证Apache-2.0Apache-2.0MPL-2.0(GitHub license 字段为 NOASSERTION,官方声明 MPL 2.0)Apache-2.0
社区活跃度(GitHub stars / 最近推送)2 467 ★ / 2026-10-171 068 ★ / 2026-10-1513 929 ★ / 2026-10-1734 036 ★ / 2026-10-17
最近发版6.3.2(2026-08-29,GitHub Release)2.57.0(2026-09-09,官网下载页)v4.3.6(2026-09-14,GitHub Release)4.4.0(官方发行目录在架版本,Kafka 不使用 GitHub Release)
版本节奏6.x 与 5.19.x 双线维护,年内多次补丁月度级补丁节奏,迭代最快季度级功能版本 + 月度补丁年度大版本 + 频繁补丁
协议/模型OpenWire/AMQP/MQTT/STOMP;Queue/TopicOpenWire/AMQP/MQTT/STOMP/CORE;Queue/Topic,多级地址模型AMQP 0-9-1/MQTT/STOMP/HTTP;Exchange/Queue 路由私有协议;分区日志、消费组回放
兼容矩阵Java 17-22(6.x),Jakarta JMS 2/3.1(部分)Java 17+,JMS 2/JakartaErlang/OTP 26-27,多语言客户端Java 17+(broker/client),流式语义

选型建议:存量 JMS/OpenWire 应用、需要 Topic 持久订阅与 Camel 集成的企业集成场景选 ActiveMQ Classic 或 Artemis(新项目优先 Artemis);强调易用的路由拓扑与运维生态、中低吞吐业务消息选 RabbitMQ;日志流、大吞吐、可回放的事件流选 Kafka。

八、参考链接