Apache Artemis 2.57.0 介绍与选型指南

Apache ActiveMQ Artemis 2.57.0 认知篇:多协议消息代理架构、四种 journal 持久化与复制/同步副本高可用、与 ActiveMQ Classic/RabbitMQ/Kafka 选型对比。

Apache ArtemisApache Artemis消息队列2026/10/18

Apache Artemis 2.57.0 介绍与选型指南

目标:为消息中间件选型者提供 Apache ActiveMQ Artemis 2.57.0 的认知基线——多协议消息代理的架构、持久化与高可用机制、与 ActiveMQ Classic/RabbitMQ/Kafka 的边界。本篇为认知篇(A1):内容基于官方站点与 GitHub 发布流联网查证,不做本地安装实测。

一、信息基准

1.1 查询日期与版本依据

  • 查询日期:2026-10-18
  • 版本依据:Apache Artemis 2.57.0,发布于 2026-09-09,为官方下载页标注的当前发布(来源:artemis.apache.org/components/artemis/download/,2026-10-18 实查:"Apache Artemis 2.57.0 (Sep 9th, 2026)")。同日期的 GitHub 仓库 apache/artemis tag 2.57.0 互证(github.com/apache/artemis/releases,2026-10-18 查询)。
  • Java 兼容性:官方下载页明确 Java compatibility: 17+(2026-10-18 实查)。
  • 版本节奏佐证:2.50.0(2026-01-15)→ 2.51.0(2026-02-06)→ 2.52.0(2026-03-02)→ 2.53.0(2026-03-16)→ 2.54.0(2026-05-14)→ 2.55.0(2026-06-23)→ 2.56.0(2026-08-21)→ 2.57.0(2026-09-09),月度级发版(来源:GitHub Releases atom,2026-10-18)。

1.2 官方来源清单

来源地址用途
Artemis 官网artemis.apache.org项目定位、特性
官方下载页artemis.apache.org/components/artemis/download/版本与 Java 兼容性
用户手册(latest)artemis.apache.org/components/artemis/documentation/latest架构、持久化、快速上手
GitHub 仓库github.com/apache/artemis发布流、发版节奏
官方示例库github.com/apache/artemis-examples官方示例

二、软件概述

Apache ActiveMQ Artemis 2.57.0 是 Apache 软件基金会的下一代消息代理(message broker):多协议、高性能、支持 JDBC 持久化的独立 Java 进程服务,为微服务事件驱动与异步解耦场景提供每秒百万级消息吞吐能力(来源:artemis.apache.org 首页"millions of messages per second"表述,2026-10-18 查询)。它是 ActiveMQ 家族的两个现行产品线之一(另一条为 ActiveMQ Classic),许可为 Apache-2.0。

协议支持覆盖 AMQP 1.0、MQTT、STOMP、OpenWire 与核心 JMS 客户端,可作为 HornetQ 与经典 ActiveMQ 的替代迁移目标(来源:官网特性页与文档,2026-10-18)。

三、核心架构与核心概念

3.1 进程与存储模型

  • 独立 Java 进程:以二进制发行版(tar.gz/zip)分发,artemis CLI 创建并管理代理实例;生产环境以独立进程/systemd 托管运行(来源:官方文档 Preparing the broker 章节)。
  • 追加写日志(Journal):消息持久化采用自研 append-only journal,官方提供四种实现按需选择(来源:官网特性页,2026-10-18 查询):
    1. AIO(ASYNCIO):Linux 上经小型 JNI 库(libaio)追求极限性能与可靠性;
    2. MAPPED:内存映射文件,性能略优但硬件故障场景可靠性略降;
    3. NIO:纯 Java 实现,通用性最好;
    4. JDBC:把消息落到关系库,适合复用既有数据库设施的保守方案。
  • 地址与队列(Address/Queue):消息路由到 address,address 按 routing type 分为 anycast(点对点,多消费者竞争)与 multicast(发布订阅,各自独立队列)。

3.2 高可用与灾备

  • live/backup 对:共享存储(shared store)或**复制(replication)**两种 HA 策略,主节点故障后备节点自动接管。
  • AMQP Broker Connections 同步副本(Mirroring):服务器互连、互为孪生,便于数据中心迁移与异地灾备(来源:官网 Disaster Recovery 章节 "AMQP Broker Connections Mirroring——Server connected to each other acting like twin brothers",2026-10-18 查询;本文按平台用语规范以"同步副本"表述 Mirroring)。
  • 可扩展性:单代理吞吐百万级消息/秒;集群(cluster)模式支持跨节点负载均衡与拓扑扩展。

四、功能特性

  1. 多协议同端口接入:AMQP 1.0/MQTT/STOMP/OpenWire/核心协议互操作,IoT、移动端与后端服务可共用同一代理。
  2. 完整 JMS 2.0 支持:标准 JMS API 语义(官方文档 JMS 章节)。
  3. 灵活持久化:四种 journal 实现覆盖从纯内存级性能到复用关系库的全谱需求。
  4. HA 双策略:共享存储与数据复制任选,配合同步副本能力实现机房级容灾。
  5. 管理面完备:Web 控制台 + JMX + CLI(artemis 命令族)+ REST 式管理 API。
  6. 大规模证明:作为 Red Hat AMQ Broker 的上游,长期服务企业级消息场景。
  7. 月度发版:2.5x 系列保持高频补丁,2.57.0 要求 Java 17+。

五、快速上手(引自官方文档)

以下命令引自官方用户手册《Preparing the broker》章节(artemis.apache.org/components/artemis/documentation/latest/preparing-brokers.html,2026-10-18 查询),前提为下载并解压 apache-artemis-2.57.0-bin.tar.gz 且已安装 JDK 17+:

# 1. 创建代理实例(指定目录、用户名、密码、是否允许匿名)
./artemis create /opt/broker --user admin --password secret --allow-anonymous

# 2. 前台启动代理实例
cd /opt/broker/bin
./artemis run

# 3. 后台运行时使用实例内的 artemis-service 管理(service artemis start/stop/status)

启动后 Web 控制台默认地址 http://localhost:8161(console 绑定端口见 etc/broker.xml 与 etc/jolokia-access.xml 配置),官方文档《Web Console》章节有完整说明。

生产者/消费者验证可使用官方文档《Using JMS》章节示例或 artemis-examples 仓库(github.com/apache/artemis-examples)中的 AMQP/JMS 示例工程。

💡 说明:artemis create 生成的 etc/broker.xml 是核心配置文件,acceptor(协议监听)、address/queue、security 设置均在其中;多协议监听通过 AMQP/MQTT/STOMP/OpenWire 多 acceptor 配置实现。

六、适用场景与限制

6.1 适用场景

  • 企业异步解耦:事务性消息、请求-应答、任务分发,需要 JMS/AMQP 语义与可靠投递。
  • 微服务事件驱动:高吞吐、低延迟的进程间事件总线,百万级消息/秒量级(官网定位)。
  • IoT 接入:MQTT 海量设备接入 + 后端 AMQP/JMS 消费。
  • ActiveMQ Classic/HornetQ 升级迁移:协议兼容设计使存量应用平滑过渡。
  • 跨机房容灾:同步副本(Mirroring)+ 复制 HA 组合。

6.2 限制

  • 定位是消息代理而非分布式日志:不做长周期流式回放/重放,无 Kafka 式分区消费者组模型;超大规模流式管道应选 Kafka/Pulsar 类。
  • 单代理为主、集群为辅:超大规模横向扩展能力弱于按分区水平扩展的流平台。
  • Java 17+ 门槛(2.57.0);JDBC journal 场景性能受数据库吞吐约束(官方对四种 journal 的定位描述)。

七、同类选型对比

对照 ActiveMQ Classic(同族)、RabbitMQ(AMQP 同域)、Kafka(分布式流平台)。活跃度来源:GitHub(shields.io/仓库页,2026-10-18);版本来源:各官方下载页/Releases(2026-10-18 实查)。

项目角色许可社区活跃度(stars+最近发版)版本节奏兼容矩阵
Artemis 2.57.0多协议下一代代理Apache-2.01.1k stars;2.57.0(2026-09-09)月度级发版Java 17+;AMQP 1.0/MQTT/STOMP/OpenWire/JMS 2.0
ActiveMQ Classic 6.2.10 / 5.19.11经典 JMS 代理Apache-2.02.5k stars;6.2.10(2026-09-26)、5.19 LTS 线并行5.x LTS + 6.x 双线补丁Java 8+(5.x)/17+(6.x);JMS 1.1/2.0、OpenWire
RabbitMQ 4.3.6AMQP 0-9-1 代理MPL-2.014k stars;4.3.6(GitHub Releases,2026-10-18)年度大版本 + 月度补丁Erlang/OTP 26+;AMQP 0-9-1/MQTT 3.1.1&5/STOMP/Stream
Apache Kafka 4.2.2分布式事件流平台Apache-2.034k stars;稳定 tag 4.2.2(4.3.2/4.4.0 处于 RC,GitHub tags 实查)年度 1–2 个大版本 + 密集 RCJVM 17/25 构建(官方 README,2026-10-18);客户端多语言

选型建议:一句话——需要企业消息语义(事务、选择器、通配订阅、JMS 标准)或协议多面手时选 Artemis(同族 Classic 更偏存量兼容,6.x 后新项目优先 Artemis);需要复杂路由规则与低延迟队列仲裁时 RabbitMQ 模型更顺手;需要海量事件流的持久回放、分区并行与生态联动(Spark/Flink/Connect)时选 Kafka——它不是代理的替代品,问题域不同。

八、参考链接

  1. Artemis 官网:https://artemis.apache.org/
  2. 官方下载页(2.57.0):https://artemis.apache.org/components/artemis/download/
  3. 用户手册(latest):https://artemis.apache.org/components/artemis/documentation/latest
  4. Preparing the broker:https://artemis.apache.org/components/artemis/documentation/latest/preparing-brokers.html
  5. 持久化章节(journal 四实现):https://artemis.apache.org/components/artemis/documentation/latest/persistence.html
  6. GitHub 仓库:https://github.com/apache/artemis
  7. 官方示例:https://github.com/apache/artemis-examples
  8. ActiveMQ 家族下载页:https://activemq.apache.org/components/

(查询日期:2026-10-18;正文所有版本号与活跃度数据均标注查询来源与日期)