跳转到正文

ActiveMQ Classic 总览 ​

ActiveMQ Classicbroker 6.2.0client activemq-client 6.2.0tag+digest 双锁

本页结论:ActiveMQ Classic 是 JMS 原生的传统 Broker:消息进入 Queue/Topic 目的地,持久消息默认写 KahaDB,消费确认后删除;重投策略由客户端 redeliveryPolicy 声明、Broker 端强制执行,毒消息耗尽后自动进默认共享死信 ActiveMQ.DLQ。它面向 Java 生态的任务分发与 JMS 兼容,而不是 Kafka 式的保留日志。

定位与适用场景 ​

ActiveMQ Classic 是 Java 生态历史最悠久的开源消息 Broker 之一(6.x 为当前主线,OpenWire 13 协议世代),在消息系统光谱中的位置:

  • 队列语义:消息进入 Queue、被一个消费者取走、确认后删除——与 RabbitMQ/Artemis 同类,与 Kafka/Redis Streams 的保留日志相反。
  • JMS 正统:OpenWire + JMS API 是原生路径,存量 JMS 应用最小改造即可接入;多协议 connector 同 Broker 并存(镜像默认 transportConnectors:OpenWire 61616、AMQP 5672、STOMP 61613、MQTT 1883、WebSocket 61614)。
  • 开箱的可靠性默认值:redeliveryPolicy 经连接 URL 声明、Broker 强制执行;重投耗尽后无需任何 broker 配置即自动进默认死信 ActiveMQ.DLQ(本仓库实测)。
  • 运维入口传统:统一 CLI bin/activemq(task 制)+ Web 控制台(8161,默认 admin/admin)+ JMX。
  • 不太适合:需要按时间任意回放的日志型场景(确认即删除)、单队列超大规模吞吐(无分区拆分)、多租户平台(无内建租户模型,见 存储与高可用)。

边界提示:Classic 与 ActiveMQ Artemis 是 Apache 同门下的两套代码库(Artemis 是下一代技术路线),配置格式、默认值与调优经验不通用;本分卷只讨论 Classic。

架构速览 ​

核心实体与关系(详见 核心概念映射):

实体职责
Queue点对点目的地;首次生产/消费时自动创建,承载竞争消费
Topic发布订阅目的地;durable subscription 各留一份
destinationPolicy(policyEntry)按目的地通配匹配的策略:死信策略、内存限额、慢消费者保护
KahaDB默认持久化适配器:文件式追加存储(${activemq.data}/kahadb)
redeliveryPolicy客户端声明(连接 URL jms.redeliveryPolicy.*)、Broker 强制执行的重投策略

能力摘要 ​

维度ActiveMQ Classic(本仓库覆盖范围)
投递语义at-least-once(SESSION_TRANSACTED);配合幂等落库达成业务级恰好一次
顺序单队列 + 单消费者 FIFO;多消费者竞争时全局顺序不保证,可用 JMSXGroupID 同组粘连
重试/DLQ客户端 redeliveryPolicy(maximumRedeliveries 计"重投次数",默认 6)+ 默认共享死信 ActiveMQ.DLQ
延迟消息AMQ_SCHEDULED_DELAY 定时投递(需 broker schedulerSupport=true)
高可用master/slave(共享文件系统或 JDBC 锁);Networks of Brokers 做多节点分布
回放不适用(确认即删除)

学习路径 ​

  1. 快速开始:最短闭环。
  2. 核心概念映射:用 Classic 术语回答统一知识模型。
  3. 路由与分发:Queue/Topic、selector、JMSXGroupID 与 VirtualTopics。
  4. 可靠性:确认后删除、崩溃窗口、重投计数口径与死信。
  5. 存储与高可用:KahaDB、systemUsage 背压、master/slave 与 Networks of Brokers。
  6. 运维与观测、陷阱与检查表。

动手实验 ​

本仓库提供三个可重复实验(验证快照均已入库,输出见各页 <LabOutput>):

  • activemq-classic basic(L1):persistent 发送确认 + 业务提交后才 session.commit() + 幂等落库,验证「commit 即删除、队列深度归零」。
  • activemq-classic retry-dlq(L2):毒消息 rollback 后按 redeliveryPolicy 重投(共 3 次投递、固定 1s 间隔),耗尽后自动进默认死信 ActiveMQ.DLQ。
  • activemq-classic cli-tools:纯镜像自带统一入口 bin/activemq 完成收发闭环(producer/consumer/status,快照已采集,见 运维与观测)。
bash
bash demos/activemq-classic/basic/run.sh
bash demos/activemq-classic/retry-dlq/run.sh
bash demos/activemq-classic/docker/run.sh

版本基线 ​

完整版本目录列出本仓库已收录的版本主题;已有运行基线与镜像证据继续以本页说明为准。

  • Broker:ActiveMQ Classic 6.2.0(镜像 tag+digest 双锁定,见 .env.versions),ACTIVEMQ_HOME=/opt/apache-activemq。
  • Java 客户端:org.apache.activemq:activemq-client:6.2.0(OpenWire)。
  • 官方文档:https://activemq.apache.org/components/classic/documentation/(checkedAt: 2026-08-20)。

实验入口与范围 ​

本产品没有独立浏览器回放工作台;按快速开始页在本机复现场景。 Docker 验证证据列出已采集结果与缺口;已有动手命令和版本基线保持适用。

以统一实验验证消息系统语义边界