皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

RabbitMQ 3.12.0 发布

RabbitMQ 3.12.0 发布

亮点
这个版本包括一些新的功能、优化,以及毕业(强制)的一些功能标志。

在这个版本中,面向用户的领域得到了最大的改进,它们是

对法定人数队列和传统队列的优化:提高了吞吐量,降低了吞吐量的变化,降低了延迟,降低了内存占用率
对(非镜像)经典队列v2(CQv2)的实现更加成熟和高效
经典队列的懒惰和非懒惰模式不再适用:经典队列v2的行为总是非常相似
与早期版本系列中的懒惰模式非常相似:积极地将数据移动到磁盘,只在内存中保留数据的子集
大大减少了每个连接的MQTT和Web MQTT内存占用率
支持OAuth 2、OIDC、IDP
OAuth 2插件的可配置性更强
这个版本还具有许多内部API的改进,为4.0版本做准备。
与Khepri。

请看下面的兼容性说明,以了解这个版本中的破坏性或潜在的破坏性变化。

发布工件
RabbitMQ 版本通过 GitHub 发布。
Debian 和 RPM 包通过 Cloudsmith 镜像以及 PackageCloud 提供。

社区 Docker 镜像、Chocolatey 包和 Homebrew 公式
是其他安装选项。它们的更新是有延迟的(通常是几天)。

Erlang/OTP兼容性说明
该版本要求Erlang 25.0或更高版本。
这引入了对基于x86和ARM64的CPU的功能平价:Erlang 25提供了JIT和
现代火焰图分析工具
为这两种主要的CPU架构提供JIT和现代Flame Graph剖析工具。

提供最新的Erlang版本解释了
哪些软件包库和工具可以用来提供Erlang 25.x的最新补丁版本。

Erlang 26
这是第一个提供Erlang 26兼容性的版本。请注意,Erlang 26是非常新的,并且
处于一个非常新的阶段,没有经过像Erlang 25那样的测试。

升级到3.12
关于升级的文档指南
有关升级的文档请参见升级指南和 RabbitMQ 更改日志
以了解其他版本的发布说明。

所需的功能标志
RabbitMQ 3.12.0 将要求在升级前启用 3.11.x 系列版本的所有功能标志、
类似于 3.11.0 要求在 3.9.0 之前引入的所有功能标志的方式。

如果未启用功能标志,RabbitMQ 3.12 及以后的节点将拒绝启动。

同时升级到 Erlang 26 和 RabbitMQ 3.12
当从 Erlang 25 上的 3.11.x 升级到 Erlang 26 上的 3.12.x 时、
集群必须至少在 3.11.17 版本上才能安全地升级法定人数队列。

另外,也可以将Erlang 25上的所有节点从早期的
3.11.x版本,然后将3.12集群升级到Erlang 26。

混合版本集群的兼容性
RabbitMQ 3.12.0 节点可以从 3.11.17 开始与 3.11.x 节点一起运行。

3.12.x 的特定功能只能在集群中的所有节点
升级到 3.12.0 或新系列中的任何其他补丁版本时,才能使用 3.12.x 特定功能。

在混合版本模式下运行时,系统的某些方面可能会出现与预期不同的行为。下面涵盖了已知的行为变化列表。
一旦所有的节点都升级到3.12.0,这些不正常现象就会消失。

混合版本的集群是一种允许滚动升级的机制,并不意味着可以长时间运行
时间(不超过几个小时)。

兼容性说明
为核心功能提供更多功能标志(”始终启用”)。
RabbitMQ 3.12.0 将要求在升级前启用 3.11.x 系列版本的所有功能标志。

如果未启用这些功能标志,RabbitMQ 3.12 及以后的节点将拒绝启动。

最小支持的 Erlang 版本
从该版本开始,RabbitMQ 需要 Erlang 25.0 或更高版本。节点将无法启动
在较早的 Erlang 版本上无法启动。

Erlang 25 作为我们的新基准,意味着在 ARM64 架构上的性能得到了极大的提高,在所有架构上都有火焰图的剖析。
以及所有 RabbitMQ 3.11 用户可使用的最新 TLS 1.3 实现。

客户端库兼容性
与 RabbitMQ 3.11.x 兼容的客户端库将与 3.12.0 兼容。

获得帮助
欢迎在 RabbitMQ 邮件列表中提出有关此版本、升级或一般 RabbitMQ 的任何问题。

值得一提的变化
版本说明保存在 rabbitmq-server/release-notes 下。

核心服务器
增强功能
Quorum队列现在可以在大量积压的情况下维持更高的吞吐量。他们还提供了更高的吞吐量
平均而言,特别是在使用单一活动消费者的情况下,它们还能提供更高的吞吐量。

GitHub问题:#7553

减少了内存占用,提高了内存使用的可预测性和经典队列的吞吐量。
这对有较长积压的经典队列特别有利。

GitHub问题:#4522, #7516

减少了quorum队列的峰值内存占用。

GitHub问题:#7175

提高了流领袖的分配效率。主要与有大量流的环境有关
流的环境。

GitHub问题:#6440

所有在3.11.0之前引入的功能标志现在都需要被启用。请确保
在升级到3.12.0之前,所有功能标志都已启用。

GitHub问题:#7219

插件和核心API:所有模式数据存储操作现在都可以通过rabbit_db_*模块来实现。
插件维护者应该切换到它们,以便更容易过渡到未来的4.0版本。

GitHub问题:#6430, #6821

插件和核心API:节点数据目录现在应该使用rabbit:data_dir/0来访问。

GitHub的问题:#6462

最初的(不完整的)Erlang 26兼容性

GitHub问题:#7443, #7900,
#7921, #8057

现在有一种方法可以为新创建的虚拟主机预先配置用户和他们的权限:

default_users.qa_user.vhost_pattern = qa.*
default_users.qa_user.tags = policymaker,monitoring
default_users.qa_user.password = fd237824441a78cd922410af4b83f0888186a8d7
default_users.qa_user.read = .*
default_users.qa_user.write = .*
default_users.qa_user.configure = .*

这在 RabbitMQ 被作为服务提供但客户(客户)可以控制虚拟主机的环境中主要是有用的。
顾客(客户)对虚拟主机有控制权。

由 @illotum (AWS) 提供。

GitHub 问题:#7208.

现在可以将策略定义为只适用于特定的队列类型。

例如,现在可以有两个与所有队列名称(’.*’)匹配的策略
但一个只适用于一种队列类型,另一个只适用于不同的队列类型、
没有冲突。

例如,这个策略将只适用于quorum队列,而不是流或经典队列:

rabbitmqctl set_policy at-least-once-dead-lettering ".*" '{"dead-letter-strategy": "at-least-once"}' --apply-to quorum_queues
 有大量经典队列的节点现在关闭的速度提高了10倍。

GitHub问题:#7745

在有大量闲置队列的环境中,减少了由指标收集引起的每两分钟一次的内存使用高峰。
大量闲置队列的环境中,减少了每两分钟一次的内存使用高峰。

GitHub问题:#7825, #7896

发送确认超时现在可以按队列(使用策略)或按消费者(使用可选的消费者参数)进行配置
或每个消费者(使用可选的消费者参数)。

GitHub问题:#5437

现在可以限制集群中可创建的虚拟主机的最大数量了
的最大数量。

由@SimonUnge(AWS)贡献。

GitHub问题:[#7777](ht…

Assets 32

转自 Release RabbitMQ 3.12.0 · rabbitmq/rabbitmq-server · GitHub