跳转到正文

ActiveMQ Artemis 总览 ​

ActiveMQ Artemisbroker 2.44.0client artemis-jakarta-client-all 2.44.0tag+digest 双锁

本页结论:ActiveMQ Artemis 是「传统 Broker + 队列」模型的多协议实现(JMS/Jakarta JMS、AMQP 1.0、OpenWire、STOMP、MQTT、CORE):消息写入 Address,按 anycast(竞争消费)或 multicast(发布订阅)路由到 Queue,确认即删除。它像 RabbitMQ 一样面向任务分发,而不是 Kafka 式的保留日志。

定位与适用场景 ​

Artemis 源自 HornetQ(后被 Apache 收编,ActiveMQ Classic 的下一代技术路线;Red Hat AMQ Broker 是其商业支持版本),在消息系统光谱中的位置:

  • 队列语义:消息进入 Queue、被一个消费者取走、确认后删除——与 RabbitMQ 同类,与 Kafka/Redis Streams 的保留日志相反。
  • JMS 正统:Jakarta JMS 2.0 的参考级实现,传统 Java EE/Jakarta EE 应用迁移 JMS 负载时的首选落点。
  • 多协议接入:同一 Broker 同时服务 AMQP 1.0(跨语言/跨平台互通)、STOMP(轻量脚本)、MQTT(IoT 遥测)与 CORE(Java 高性能路径)。
  • 服务端可靠性策略:重试次数、重投间隔、死信地址、过期地址都是服务端 address-setting,不依赖客户端自觉(见 可靠性)。
  • 不太适合:需要按时间任意回放的日志型场景(确认即删除,无保留回放)、超大规模分区吞吐——单个 Queue 不做分区拆分(见 存储与高可用)。

边界提示:Artemis 与 ActiveMQ Classic(6.x)是两套代码库,配置与调优经验不通用;本分卷只讨论 Artemis。

架构速览 ​

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

实体职责
Address路由单元;声明 anycast(点对点)或 multicast(发布订阅)路由类型
Queue挂在 Address 下的消息暂存队列;anycast 地址上的队列承载竞争消费
Subscriptionmulticast 地址上的具名订阅,本质是一个 durable queue
Journal追加式持久化日志(NIO/ASYNCIO),消息落盘的主路径
address-setting按地址通配符匹配的服务端策略:重投、DLQ、过期、分页

能力摘要 ​

维度ActiveMQ Artemis(本仓库覆盖范围)
投递语义at-least-once(CLIENT_ACKNOWLEDGE);XA 事务内原子收发可做到处理级 exactly-once
顺序单队列 + 单消费者 FIFO;多消费者竞争时全局顺序不保证,可用 Message Group 同组粘连
重试/DLQ服务端 address-setting:max-delivery-attempts + redelivery-delay + dead-letter-address
延迟消息原生支持:_AMQ_SCHED_DELAY 定时投递
高可用live/backup 复制对(同步复制 + 仲裁)或共享存储;集群做 Queue 分布与重分配
回放不适用(确认即删除);non-destructive 队列是特殊例外

学习路径 ​

  1. 快速开始:最短闭环。
  2. 核心概念映射:用 Artemis 术语回答统一知识模型。
  3. 路由与分发:anycast/multicast、divert、selector 与 Message Group。
  4. 可靠性:确认后删除、崩溃窗口、重投与死信、去重。
  5. 存储与高可用:journal、分页、复制与集群边界。
  6. 运维与观测、陷阱与检查表。

动手实验 ​

本仓库提供三个可重复实验(前两个快照尚未采集,验证输出待补):

  • artemis basic(L1):JMS send 确认 + 业务提交后才 acknowledge + 幂等落库,验证「ack 即删除、队列深度归零」。
  • artemis retry-dlq(L2):毒消息按 address-setting 重投(共 3 次投递、固定 1s 间隔),耗尽后转入 orders-dlq。
  • artemis cli-tools:纯镜像自带统一入口 bin/artemis 完成收发闭环(producer/consumer/browser 子命令,快照已采集,见 运维与观测)。
bash
bash demos/artemis/basic/run.sh
bash demos/artemis/retry-dlq/run.sh
bash demos/artemis/docker/run.sh

版本基线 ​

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

  • Broker:ActiveMQ Artemis 2.44.0(镜像 tag+digest 双锁定,见 .env.versions)。
  • Java 客户端:org.apache.activemq:artemis-jakarta-client-all:2.44.0(Jakarta JMS API)。
  • 官方文档:https://activemq.apache.org/components/artemis/(checkedAt: 2026-08-19)。

实验入口与范围 ​

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

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