首页/新闻资讯/正文详情

RabbitMQ 3.11.9 维护版本深度解析:核心修复、全局权限命令与 OAuth2/AMQP 1.0 增强

发布时间:2026/9/23 1:42:29 来源:云帆数科 栏目:资讯中心
RabbitMQ 3.11.9 维护版本深度解析:核心修复、全局权限命令与 OAuth2/AMQP 1.0 增强
RabbitMQ 3.11.9 维护版本深度解析核心修复、全局权限命令与 OAuth2/AMQP 1.0 增强【免费下载链接】rabbitmq-serverOpen source RabbitMQ: core server and tier 1 (built-in) plugins项目地址: https://gitcode.com/gh_mirrors/ra/rabbitmq-serverRabbitMQ3.11.9是3.11.x发布系列中的一个维护版本maintenance release它不引入新的破坏性特性而是聚焦于核心服务器、CLI 工具、Management 插件以及多个协议插件AMQP 1.0、MQTT、OAuth 2、LDAP的缺陷修复与能力增强。本文以官方发布说明为骨架结合当前仓库源码逐一解析该版本中的关键变更包括新命令rabbitmqctl set_permissions_globally的实现原理、rabbitmq-diagnostics cluster_status新增的 CPU 核数统计、OAuth 2 插件additional_scopes_key配置项的修复细节以及围绕 Erlang 25 基线的升级注意事项帮助读者在升级到 3.11.9 前全面评估影响面并掌握相关新功能的实际用法。版本概览与升级须知3.11.9属于3.11.x发布系列是一个纯维护版本。其核心升级约束如下必须使用 Erlang 25自3.11.0起RabbitMQ 就以 Erlang 25 作为最低支持版本节点在更旧的 Erlang 版本上将无法启动。从更早版本升级如果当前运行的是 3.11.0 之前的版本升级前请完整阅读 v3.11.0 发布说明 中的升级章节其中包含此系列版本的完整升级步骤与注意事项。依赖升级本版本没有任何依赖升级Dependency Upgrades: None in this release这进一步说明 3.11.9 是一个聚焦于缺陷修复与小幅增强的稳定化版本。在下载分发源码时发布说明特别强调应下载名为rabbitmq-server-3.11.9.tar.xz的完整发行版源码归档而不是使用 GitHub 自动生成的 source tarball。这一点在离线构建或需要完整构建环境时尤为重要。Erlang 25新基线带来的三个能力提升作为 3.11 系列的新基线Erlang 25 为所有用户带来了三方面直接收益ARM64 架构上的性能显著提升Erlang 25 对 ARM64 平台做了大量优化对于部署在 AWS Graviton、树莓派或其他 ARM 服务器上的 RabbitMQ 节点尤其受益跨架构的火焰图flame graph性能剖析借助 Erlang 25 的msacc与运行时剖析能力可以在所有受支持架构上对节点做火焰图级性能分析定位热点最新的 TLS 1.3 实现所有 3.11 用户都能使用当时 OTP 中最新、最完整的 TLS 1.3 支持提升传输层安全性与握手性能。Core Server核心服务器变更流协议 v2 交付启动失败的修复使用 RabbitMQ Stream 协议 v2即 AMQP 1.0 之上的流协议新版进行消息投递时某些场景下可能出现无法启动的问题。该修复对应 PR #7118。流协议的整体实现位于 deps/rabbitmq_stream 目录流在内部正是以 AMQP 1.0 消息格式作为载体因此本版本同时配套了下文提到的 AMQP 1.0 消息格式增强。QPid 客户端发布者触发异常的修复部分使用 QPid 作为客户端库的发布者在特定情况下会让节点抛出异常对应 issue #7119。QPid 是 Apache 旗下的 AMQP 客户端库其消息属性编码方式与 RabbitMQ 官方客户端存在细微差异该修复让节点对这些消息的处理更加健壮。Feature Flag 跨集群发现的默认稳定性级别修正这是本版本中一个隐蔽但重要的行为修正。当节点在集群范围内收集、比对各自支持的 feature flag 时未知 feature flag 的默认稳定性级别由stable改为experimental对应 PR #7156。从源码看在 deps/rabbit/src/rabbit_ff_controller.erl 的集群 feature flag 归并逻辑中收集开始时所有节点都以空集群清单起步因此每个 feature flag 一开始都是未知的对于未知 flag现在使用UnknownProps #{stability experimental}见 L1454而不是依赖rabbit_feature_flags:get_stability/1对无显式稳定性声明的 flag 返回stable的默认逻辑稳定性等级的归并顺序为required stable experimentalL1462-L1468当不同节点对同一 flag 给出不同稳定性结论时取更保守的一侧。这样修正的意义在于如果节点 A 把某 flag 标记为 experimental而节点 B 未声明其稳定性旧逻辑会默认它是 stable从而在归并时错误地覆盖 experimental 结论新逻辑确保未知即按 experimental 处理避免集群内对 feature flag 稳定性的判定出现不一致。Reset 后节点过早接收流副本数据的修复之前被reset或手动添加的节点可能在数据库初始化完成之前就开始接收流副本数据导致所有期望空白节点状态的代码路径产生混乱对应 PR #7222。该修复保证了节点状态初始化的时序正确性。Feature Flag 日志消息格式的小修复修正了 feature flag 日志消息的格式问题对应 PR #7233。这一改动虽然小但让运维排查 feature flag 状态时的日志输出更可读。AMQP 1.0 消息格式支持增强核心服务器增强了对 AMQP 1.0 消息格式的支持PR #7001。由于 RabbitMQ Stream 在内部使用 AMQP 1.0 消息格式承载流消息当原始消息本身通过 AMQP 1.0 协议发布时本增强保证了消息属性、注解等元数据在流场景下的正确保留与处理。与此配套AMQP 1.0 插件deps/rabbitmq_amqp1_0也获得了 OAuth 2 支持见下文。CLI 工具新命令与诊断增强新命令rabbitmqctl set_permissions_globally这是本版本 CLI 侧最重要的新功能对应长期 issue #1000为指定用户在所有现有虚拟主机vhost上一次性设置权限。rabbitmqctl set_permissions_globally username conf write read参数含义username目标用户名conf配置资源配置权限正则模式write写入权限正则模式read读取权限正则模式命令的行为细节可以从源码确认参数校验在 deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/set_permissions_globally.ex 中参数少于 4 个返回not_enough_args多于 4 个返回too_many_args命令被归类到:access_control帮助节并声明Sets user permissions for all virtual hosts。RPC 转发命令通过:rabbit_misc.rpc_call调用核心后端rabbit_auth_backend_internal:set_permissions_globally/5L32-L39。核心实现在 deps/rabbit/src/rabbit_auth_backend_internal.erl 中实现非常直观——先通过rabbit_vhost:list_names()枚举全部虚拟主机然后对每个 vhost 逐个调用set_permissions/6set_permissions_globally(Username, ConfigurePerm, WritePerm, ReadPerm, ActingUser) - VirtualHosts rabbit_vhost:list_names(), [set_permissions(Username, VH, ConfigurePerm, WritePerm, ReadPerm, ActingUser) || VH - VirtualHosts], ok.错误处理当用户不存在时命令返回no_such_user错误JSON 格式下为{result: error, node: ..., message: User ... does not exist}普通格式下使用exit_nouser退出码若目标 RabbitMQ 节点不可达则抛出badrpc。这些行为在 deps/rabbitmq_cli/test/ctl/set_permissions_globally_command_test.exs 中均有对应测试用例覆盖。该命令极大简化了多 vhost 场景下的权限初始化以前需要对每个 vhost 重复执行set_permissions现在一条命令即可完成全局授权非常适合平台化、多租户部署的初始化和审计场景。命令的手册页同样已更新至 deps/rabbit/docs/rabbitmqctl.8。rabbitmq-diagnostics cluster_status 新增 CPU 核数统计rabbitmq-diagnostics cluster_status现在会列出每个节点可用的 CPU 核数以及总数PR #7135。这使得在混合规格的集群中运维人员可以直接通过该命令一眼看出各节点计算资源的差异为容量规划、负载均衡和排障提供依据。Management 插件两处用户体验修复Limits 页签空配置加载失败此前当集群**没有任何已配置的 limit限额**时Management UI 的 Limits 页签会加载失败issue #7142。修复后空配置场景下页面可以正常渲染并提示无 limit。支持禁用 Operator Policy 修改Management 插件新增了禁用 operator policy 修改的能力issue #7131由 illotumAWS贡献。在 RabbitMQ-as-a-Service 等托管环境中租户不应具备修改/删除平台方设置的 operator policy 的权限该能力正是为此类场景设计的平台方可以锁定 operator policy防止被误操作或恶意篡改。AMQP 1.0 插件OAuth 2 认证/授权后端支持AMQP 1.0 插件deps/rabbitmq_amqp1_0新增了对 OAuth 2 认证与授权后端的支持PR #6931。这意味着使用 AMQP 1.0 协议的客户端包括流客户端现在可以直接接入 RabbitMQ 的 OAuth 2 认证体系与 AMQP 0-9-1 客户端共用同一套基于 JWT、scope 的认证授权策略实现在统一身份体系下的多协议接入。OAuth 2 认证后端的具体实现位于 deps/rabbitmq_auth_backend_oauth2。MQTT 插件客户端 ID 清理修复MQTT 插件修复了节点在被移出集群的过程中未能正确清理连接到该节点上的客户端 ID 的问题PR #7162。在集群节点下线removal过程中如果残留的客户端 ID 未被清理可能导致后续客户端重连时发生 ID 冲突或会话状态混乱。该修复确保了下线流程中客户端注册信息的完整清理。OAuth 2 插件additional_scopes_key 配置项修复本版本修复了auth_oauth2的additional_scopes_key配置项完全不生效的问题PR #7190由 brunomedeirosdedalus 贡献。配置项的作用additional_scopes_key用于指定 JWT 中承载额外 scopes的 claim 路径。在默认的scopeclaim 之外某些身份提供方IdP会把授权范围放在嵌套的 claim 结构中如authorization.permissions.scopes该配置项允许管理员告诉 RabbitMQ 去这些路径提取 scopes。配置时可以在 resource server 下使用它示例基于源码中路径解析逻辑注释给出的典型结构auth_oauth2.resource_servers.my_resource_server.id my_resource_server auth_oauth2.resource_servers.my_resource_server.additional_scopes_key authorization.permissions.scopes源码实现细节修复后的实现可以从两处源码得到印证配置同义词映射在 deps/rabbitmq_auth_backend_oauth2/src/rabbit_oauth2_schema.erl 中additional_scopes_key被声明为旧配置名extra_scopes_source的同义词两者等价配置解析阶段会统一转换。scope 提取逻辑在 deps/rabbitmq_auth_backend_oauth2/src/rabbit_auth_backend_oauth2.erl 中extract_scopes_from_additional_scopes_key/2的实现为extract_scopes_from_additional_scopes_key( #resource_server{additional_scopes_key Key} ResourceServer, Payload) when is_binary(Key) - Paths binary:split(Key, , [global, trim_all]), AdditionalScopes [ extract_token_value(ResourceServer, Payload, Path, fun extract_scope_list_from_token_value/2) || Path - Paths], set_scope(lists:flatten(AdditionalScopes) get_scope(Payload), Payload); extract_scopes_from_additional_scopes_key(_, Payload) - Payload.要点解读支持空格分隔的多个 claim 路径逐个提取extract_token_value/4同文件 L353-L407实现了对点分路径的递归解析兼容 map 嵌套、list of maps 等结构提取到的额外 scopes 会与已有的 scope 列表合并AdditionalScopes get_scope(Payload)最终在normalize_token_scope/2L286-L297中依次经过 scope 别名展开、rich auth request 提取、前缀过滤、去重并受MAX_SCOPE_COUNT上限约束超出返回too_many_scopes错误。修复前该配置项被解析但从未参与 token scope 归一化流程因此设置后毫无效果修复后额外的 scope claim 会真正并入授权判定所依据的 scope 集合。LDAP 插件user_dn_pattern 默认值转义修复LDAP 插件的user_dn_pattern设置默认值存在一个由构建工具差异引发的转义问题issue #7161由于$符号在 Make 与 Bazel新采用的构建工具中的转义规则不同默认值中多出了一个$字符。修复后默认值与文档描述一致。涉及插件的配置 schema 位于 deps/rabbitmq_auth_backend_ldap/priv/schema。这一案例也提示当项目同时支持多套构建系统时配置默认值中的特殊字符转义需要格外校验。依赖升级与源码归档说明本版本没有任何依赖升级属于纯粹的稳定化维护。在获取源码时请注意如需完整发行版源码请下载rabbitmq-server-3.11.9.tar.xz归档而不是 GitHub 自动生成的 source tarball升级前若从 3.11.0 之前的版本升级务必先阅读 v3.11.0 发布说明 的升级章节所有节点必须运行 Erlang 25 及以上版本否则无法启动。总结RabbitMQ 3.11.9 作为 3.11 系列的维护版本其价值体现在三个方面稳定性流协议 v2 启动、QPid 客户端兼容、reset 节点初始化时序、MQTT 下线清理等修复、可运维性set_permissions_globally全局授权命令、cluster_statusCPU 核数统计、Management UI 与 operator policy 控制以及多协议与安全的收敛AMQP 1.0 的 OAuth 2 支持与消息格式增强、OAuth 2 scope 配置项修复。对于运行 3.11.x 系列的集群本版本值得尽快升级对于仍在旧版本3.10 及以下的用户则应先按 v3.11.0 发布说明 规划好 Erlang 25 基线的迁移。【免费下载链接】rabbitmq-serverOpen source RabbitMQ: core server and tier 1 (built-in) plugins项目地址: https://gitcode.com/gh_mirrors/ra/rabbitmq-server创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

jsd图解原理
jsd图解原理

JS速查手册:3分钟看懂JS核心,告别只会语法不会搭项目的尴尬 很多兄弟刚入行写代码,对着《JavaScript高级程序设计》啃了半个月,变量、循环、函数倒背如流。一让你做个“员工考勤打卡”或者“劳务工资单生成器”,脑子瞬间空白。这就是典型… · 2026/9/23 1:42:29

Gitpod ws-manager-bridge 深度解析:Workspace 状态同步、实例治理与集群管理的核心枢纽
Gitpod ws-manager-bridge 深度解析:Workspace 状态同步、实例治理与集群管理的核心枢纽

Gitpod ws-manager-bridge 深度解析:Workspace 状态同步、实例治理与集群管理的核心枢纽 【免费下载链接】gitpod The developer platform for on-demand cloud development environments to create software faster and more securely. 项目地址: https://gitcod… · 2026/9/23 1:42:22

数据挖掘能力验证:从试卷到生产环境的工程实践
数据挖掘能力验证:从试卷到生产环境的工程实践

简介:本资源为重庆大学《数据仓库与数据挖掘》课程期末考试真题试卷,面向计算机、大数据及相关专业本科生与备考研究生,聚焦数据驱动决策系统的核心能力考查。试卷覆盖数据仓库设计(四类视图、星型/雪花/实时星座模式)… · 2026/9/23 1:42:22

道路坑洼识别CNN二分类实战:从数据预处理到PyQt5界面部署
道路坑洼识别CNN二分类实战:从数据预处理到PyQt5界面部署

简介:这是一套基于PyTorch与CNN的道路坑洼识别方案,配套完整数据集,面向深度学习初学者及道路病害检测方向的动手实践者。压缩包共252个文件,其中246张JPG图片覆盖正常与坑洼两类样本,并包含旋转、填充灰边等增强后的图… · 2026/9/23 2:42:42

泉州防水补漏上门电话|本地师傅勘查漏水位置|欧米到家服务电话
泉州防水补漏上门电话|本地师傅勘查漏水位置|欧米到家服务电话

📝 文章简介泉州住宅、商铺和办公场所常见的漏水问题,包括卫生间渗水、阳台积水、屋顶漏水、外墙返潮、厨房墙面发霉、窗边渗水、地下室潮湿等。欧米到家提供泉州多区域防水补漏、漏水点排查、局部修补、卫浴及水电相关维修服务。遇到雨后渗水、墙顶水印… · 2026/9/23 2:42:29

Self-hosted LiveSync 贡献指南:从环境搭建、代码验证到翻译与发布的全流程实战
Self-hosted LiveSync 贡献指南:从环境搭建、代码验证到翻译与发布的全流程实战

数据同步 【免费下载链接】obsidian-livesync 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-livesync 点击查看 免费下载 本篇指南基于 obsidian-livesync 仓库的 CONTRIBUTING.md 与 devs.md 编写,系统讲解如何为 Self-hosted LiveSync&… · 2026/9/23 2:42:29

自研还是采购?一套可复制的BI选型决策框架与成本模型
自研还是采购?一套可复制的BI选型决策框架与成本模型

聊到BI选型,团队里几乎绕不开同一个争论:到底是自研一套BI,还是直接采购成熟产品。这个问题的答案远不是一句“看预算”就能打发的。过去几年我既带人从零搭过BI平台,也主导过Power BI、FineBI这类成熟产品的落地,两种… · 2026/9/23 2:42:29

Figma vs 开源设计工具:Penpot与OpenPencil迁移实战与选型指南
Figma vs 开源设计工具:Penpot与OpenPencil迁移实战与选型指南

1. 设计工具选型的十字路口:为什么现在讨论这个话题设计工具的选择从来都不是一个纯粹的技术问题。过去几年里,Figma几乎成了UI/UX设计领域的默认答案——协作流畅、插件生态丰富、社区资源庞大,团队里只要有人甩出一个链接,所有人… · 2026/9/23 2:42:29

AI做PPT返工率太高?实测五款工具后,我总结了低返工工作流
AI做PPT返工率太高?实测五款工具后,我总结了低返工工作流

1. 为什么“返工”成了AI做PPT的隐形天花板我大概从2023年上半年开始,陆续试了市面上能叫得出名字的AI生成PPT工具,少说也有十几款。一开始确实惊艳——输入一句话,几十秒后一份带配图、有版式、甚至带点动画的PPT就出来了。但用得越多&#… · 2026/9/23 2:42:29

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码