Apache Qpid 介绍与选型指南

Apache Qpid 多组件 AMQP 消息中间件认知篇:Broker-J 10.1.1 与 Proton/JMS 各组件版本基准、AMQP 协议与互操作概念、官方快速上手,以及与 RabbitMQ、ActiveMQ 的选型对比。

Apache QpidApache消息队列Java2026/10/18

Apache Qpid 介绍与选型指南

目标:讲清 Apache Qpid(下文简称 Qpid)是什么、由哪些组件构成、各组件如何围绕 AMQP 协议分工协作,以及 2026 年 10 月当前各组件最新版本下的同类消息中间件选型对比。Qpid 为多组件项目、无统一版本号,本文标题不带版本号,各组件版本以「一、信息基准」的组件-版本基准表为准。本文为 A1 认知篇:全部内容基于官方下载页、官方发行目录与官方组件文档联网查证编写,查询日期统一为 2026-10-18,不含本地安装实测。

一、信息基准

组件-版本基准表(版本依据:官方下载页 https://qpid.apache.org/download.html 的 current releases 列表与 ASF 发行目录 https://downloads.apache.org/qpid/ 目录时间戳,查询日期 2026-10-18):

组件当前版本发行依据
Qpid Broker-J(纯 Java 消息代理)10.1.1发行目录 qpid/broker-j/10.1.1/(目录时间戳 2026-09-24);官方发行页 qpid-broker-j-10.1.1
Qpid JMS(jakarta.jms 客户端)2.11.0官方下载页 Messaging APIs 表;发行页 qpid-jms-2.11.0
Qpid JMS(javax.jms 客户端)1.17.0官方下载页 Messaging APIs 表;发行页 qpid-jms-1.17.0
Qpid Proton(AMQP 工具包,C 系列)0.40.0官方下载页;发行页 qpid-proton-0.40.0
Qpid Proton-J(Java 实现)0.35.0官方下载页;发行页 qpid-proton-j-0.35.0
Qpid ProtonJ2(新一代 Java 实现)1.4.0发行目录 qpid/protonj2/1.4.0/(目录时间戳 2026-10-09)
Qpid Proton DotNet(.NET 实现)1.1.0官方下载页;发行页 qpid-proton-dotnet-1.1.0
Qpid Interop Test(互操作测试套件)0.3.0官方下载页;发行页 qpid-interop-test-0.3.0
项目内容
查询日期2026-10-18
许可证Apache License 2.0(各组件发行物内含 LICENSE/NOTICE,官方下载页声明发行流程遵循 ASF 规范)
组件语言Broker-J/JMS/ProtonJ2/Proton-J 为 Java;Proton 提供 C/C++/Python/Ruby 绑定;Proton DotNet 为 .NET;Qpid Messaging API 为 C++/Python
说明官方组件矩阵中另列有 C++ broker 与 Dispatch router 两类服务器组件,但二者未出现在当前官方下载页的 current releases 列表中,其最新发行版本官方未公布于该页

官方来源清单:

二、软件概述

Apache Qpid 是 ASF 旗下围绕 AMQP(Advanced Message Queuing Protocol)标准的消息中间件多组件项目,官方将其组件分为三类:消息 API(构建 AMQP 应用)、消息服务器(部署 AMQP 网络)与消息工具。与提供单一发行物的消息软件不同,Qpid 的交付物是一组可独立选用、可互相组合的组件——应用侧可用 Proton/ProtonJ2/Proton-J/Qpid JMS/Proton DotNet 之一接入,服务侧可部署 Broker-J;任何共享相同 AMQP 版本的 Qpid 组件均可互通,官方明确指出「例如代理分别以 C++ 与 Java 实现,但并不要求 C++ 或 JMS 客户端才能通信」。

当前官方下载页可获取的当前发行版本中,服务端以 Broker-J 10.1.1(2026-09 上架)为代表;客户端侧 Qpid JMS 2.11.0 面向 jakarta.jms(Jakarta EE 新命名空间)、1.17.0 面向 javax.jms(传统命名空间),ProtonJ2 1.4.0 于 2026-10-09 上架发行目录,是 Proton 家族中最新活跃的 Java 实现。

三、核心概念与架构

3.1 AMQP 协议与组件互操作

Qpid 全家族以 AMQP 为共同语言。官方兼容矩阵给出的关键结论:

  • Broker-J 支持 AMQP 1.0、0-10、0-9-1、0-9、0-8 多版本,可在各版本间翻译;
  • Qpid JMS 支持上述全部版本(Java 语言,运行于 JVM);
  • Qpid Proton(C/C++/Java/Python/Ruby)与 Dispatch router 支持 AMQP 1.0;
  • Qpid Messaging API(C++/Python)支持 1.0 与 0-10。

AMQP 1.0 是 OASIS 国际标准,这也是 Qpid 区别于多数消息软件的定位:把「协议实现」与「代理实现」拆开,协议层(Proton 家族)可被任何消息组件复用——官方文档指出 Proton 除作为消息 API 外,还被其他 Qpid 组件用于实现 AMQP 1.0 协议支持。

3.2 消息 API 组件

  • Qpid Proton:反应式(reactive)API,提供「全谱系」的 AMQP 控制,可用来实现客户端、代理、桥接与路由器等任何消息角色;语言覆盖 C、C++、Java、Python、Ruby(另有 Proton-J 传统 Java 实现与新一代 ProtonJ2、.NET 平台的 Proton DotNet)。
  • Qpid JMS:AMQP 风格的 JMS 实现,2.x 基于 jakarta.jms,1.x 基于 javax.jms,供 Java EE/Jakarta EE 应用直接替换其他 JMS 提供者。
  • Qpid Messaging API:面向连接的 API,覆盖 C++ 与 Python。

3.3 消息服务器组件

  • Broker-J:纯 Java 实现的完整消息代理(message-oriented middleware),负责存储、路由与转发消息,是 Qpid 当前发行列表中的主力服务端(详见 3.4 与「四、功能特性」)。
  • C++ broker 与 Dispatch router:官方组件矩阵中仍收录——C++ broker 为原生代码代理(历史版本支持 AMQP 1.0 与 0-10),Dispatch router 用于构建连接客户端、代理与服务的冗余路由网络;但两者均未出现在当前官方下载页的 current releases 列表中。

3.4 Broker-J 的内部模型

按官方 Broker Book(10.1.1)的章节组织,Broker-J 的运行模型包括:broker 之下的虚拟主机(virtual host,隔离的消息域)、虚拟主机内的队列与路由行为、可插拔持久化存储、访问控制与认证提供者,以及三条管理通道——REST API、AMQP Management 与 Web 管理控制台。初始配置内嵌于发行物中,首次启动时物化为工作目录(QPID_WORK)下的配置文件,后续可通过 Web 控制台完全配置(官方 Getting Started 章节说明)。

四、功能特性

以下清单引自官方 Broker-J 组件页(https://qpid.apache.org/components/broker-j/index.html ,对应版本 10.1.1):

  • 协议能力:在 AMQP 各版本间说与翻译(speak and translate among all versions of AMQP);AMQP over WebSockets;
  • 管理能力:REST、AMQP Management 与 Web 控制台三种管理方式;
  • 安全能力:访问控制列表(ACL)、可插拔认证支持 LDAP、Kerberos、OAUTH2 与 SSL 客户端证书、SSL 加密连接;
  • 可靠性:事务、高可用(HA)、生产者流控(producer flow control)、不可达消息处理(undeliverable message handling)、阈值告警、心跳;
  • 队列语义:基于头的路由(header-based routing)、消息组(message groups)、服务端选择器(server-side selectors)、last value queue、优先级队列、排序队列等特种队列;
  • 存储能力:可插拔持久化(支持 Derby、SQL、BDB 存储)、流控落盘(flow to disk)、消息压缩、灵活日志。

客户端侧,ProtonJ2/Proton 提供反应式编程模型与跨语言绑定;Qpid JMS 提供 JMS 标准接口下的 AMQP 传输,jakarta/javax 双命名空间并行发布便于新旧 Java 平台分别升级。

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

以下路径引自官方 Broker Book《Chapter 3. Getting Started》(来源:https://qpid.apache.org/releases/qpid-broker-j-10.1.1/book/Java-Broker-Getting-Started.html )与官方下载页,说明 Broker-J 的最小启动方式:

  1. 从官方下载页获取 Broker-J 10.1.1 二进制包 apache-qpid-broker-j-10.1.1-bin.tar.gz(附 ASC 签名与 SHA512 校验文件,官方要求校验后使用)。
  2. 解压后运行 Unix 启动脚本(官方手册 3.3 节「Starting/Stopping the broker on Unix」所述方式):
tar xzf apache-qpid-broker-j-10.1.1-bin.tar.gz
cd apache-qpid-broker-j-10.1.1
./bin/qpid-server
  1. 启动后通过 Web 管理控制台管理 broker(官方手册 6.2 节「Web Management Console」;管理通道默认提供 HTTP 端口,具体端口与初始账号配置见手册 Initial Configuration 章节及首次启动日志输出)。

客户端侧以 Qpid JMS 为例,将 qpid-jms-client 加入 Maven 依赖后即可通过 amqp:// 连接串连接 Broker-J(官方 Maven 页 https://qpid.apache.org/maven.html 提供坐标)。以上步骤为官方文档记载的最小路径,本文未在本地执行验证。

六、适用场景与限制

适合选择的场景:

  • 企业需要严格遵循 AMQP 1.0 开放标准,要求客户端与代理可替换、可互操作;
  • Java/Jakarta EE 存量系统以 JMS 接入 AMQP 网络(jakarta 与 javax 命名空间各有维护线);
  • 跨语言团队(C++/Python/Ruby/.NET/Java)需要同一套协议工具包构建自定义消息组件(Proton 反应式 API);
  • 需要 JMS 对象消息、事务、HA、消息组等传统企业消息能力且偏好纯 Java 部署。

需要权衡的限制:

  • 社区规模与生态热度小于 RabbitMQ 等主流 AMQP 代理,第三方资料较少;
  • C++ broker 与 Dispatch router 未列入当前官方发行列表,新建网络型部署缺乏其当前版本支撑,选型应以 Broker-J 为准;
  • Broker-J 面向经典代理场景,不提供 Kafka/Pulsar 式的日志流语义、分层存储与内置跨集群复制;
  • 各组件独立发版,升级时需按组件核对版本组合(以官方下载页 current releases 为准)。

七、同类选型对比

对比对象为 AMQP/多协议消息中间件领域最常并列的项目。下表数据均为 2026-10-18 联网实查:stars 来自 shields.io 实时徽章;最近发版来自 GitHub Releases 与 ASF 官方发行目录。

维度Qpid Broker-J 10.1.1RabbitMQ 4.3.6ActiveMQ Classic 6.3.2ActiveMQ Artemis 2.44.0
开源许可Apache-2.0MPL-2.0Apache-2.0Apache-2.0
GitHub stars / 最近发版约 71(apache/qpid-broker-j)/ 2026-09-24 上架官方目录约 14k / 2026-09-14约 2.5k / 2026-08-29约 1.1k / 发行目录在架 2.44.0(2026-05)
版本节奏大版本年度级、补丁按需(10.x 系列)4.3.x 系列月度级维护(4.3.0→4.3.6)6.2.x/6.3.x/5.19.x 三线并行维护长周期功能版 + 按需补丁
兼容矩阵要点AMQP 1.0/0-10/0-9-1/0-9/0-8 + WebSockets;JMS 全版本主打 AMQP 0-9-1,AMQP 1.0 经插件支持;MQTT/STOMP 经插件OpenWire/AMQP/STOMP/MQTT 多协议,JMS 全实现Core/OpenWire/AMQP 1.0/MQTT/STOMP 多协议,JMS 全实现
架构取向纯 Java 经典代理,可插拔持久化与认证Erlang/OTP 实现,集群与仲裁队列(quorum queues)/流(streams)生态成熟经典单/主从 broker,协议兼容最广高性能日志型代理, Artemis 为 ActiveMQ 官方推荐下一代

注:Broker-J 的 GitHub stars 为 shields.io 对 apache/qpid-broker-j 仓库的实查值;Qpid 其余客户端组件仓库规模更小,官方未单独公布统一项目 stars。

选型建议:以 AMQP 1.0 标准合规与 JMS 双命名空间接入为先选 Qpid Broker-J;追求生态成熟度与运维资料丰富度选 RabbitMQ;存量 JMS/多协议遗留系统选 ActiveMQ Classic;新建高吞吐 JMS/多协议平台优先 ActiveMQ Artemis。

八、参考链接