RabbitMQ 4.0 版本弃用公告
在 RabbitMQ 4.0 版本中,我们打算移除一些 RabbitMQ 功能,以
- 提高核心代理的弹性
- 减少可用的次优配置数量
- 从团队中移除技术表面积(维护旧代码)
- 减少支持负担
我们不断创新,以满足并超越用户的期望。移除不再满足这些期望或为用户服务的旧功能,意味着我们可以专注于我们的使命:提供一个稳定、高效且灵活的消息系统。
我们宣布弃用的功能被选中是因为(或)
- 在某些情况下,它们的行为不是最佳的
- 它们很少使用
鉴于每个功能都有一个更新、更安全的替代方案可以实现相同的结果,我们认为没有人应该使用这些功能。
本文档旨在解释这些更改并提供提供反馈的机会。
这些更改将在何时进行?
我们打算在 RabbitMQ 4.0 版本发布时进行这些更改。目前尚未确定此版本的发布时间。
在进行更改之前,我们将通过调查来审查提供的反馈。
如何提供反馈?
如果您想对此公告提供反馈,请填写此调查。
公告
禁用通过管理 API/UI 传递指标
我们为什么要做出这个决定?
管理 API 一直在执行两种功能:控制平面和指标传递系统。这种双重目的意味着在极少数情况下(例如极端负载)指标会延迟。
有哪些替代方案?
Prometheus 插件自 2019 年 10 月发布的 3.8 版本以来一直可用,即使在负载下也能提供指标。它还有额外的好处,即提供比管理 API 可用的指标更广泛的指标。有关 Prometheus 和 Grafana 仪表板的文档在此。
移除全局 QoS
我们为什么要做出这个决定?
不建议使用全局 QoS,其中整个通道使用单个共享预取。
有哪些替代方案?
应改为设置每消费者 QoS(非全局)。
移除 RAM 节点
我们为什么要做出这个决定?
RAM 节点将其所有内部元数据(包括用户、策略、队列和 RabbitMQ 集群成员身份)保存在内存中。当代理节点重新启动时,所有这些信息都将丢失,这意味着在高可用性集群中使用 RAM 节点是不建议的,因为它会导致数据丢失。
有哪些替代方案?
应使用具有快速存储的磁盘节点。
移除经典队列镜像
我们为什么要做出这个决定?
与经典镜像队列相比,仲裁队列提供了更高的数据安全性。
有哪些替代方案?
客户应使用仲裁队列进行复制和数据安全。经典镜像队列的 TTL 可以用流替换。
移除瞬态非独占队列
我们为什么要做出这个决定?
瞬态队列是生命周期与其声明所在的节点的正常运行时间相关的队列。在单节点集群中,它们在节点重新启动时被移除。在集群环境中,它们在承载它们的节点重新启动时被移除。
正确使用瞬态队列要求应用程序开发人员了解有关节点正常运行时间的某些信息。此外,节点重启不是移除未使用队列的好方法。
有一种类型的瞬态队列不包括在此弃用中;独占队列。独占队列与声明连接的生命周期相关联,这是应用程序开发人员可以考虑并利用的。
通过弃用瞬态队列,我们移除了一个可能令人困惑的队列选项。我们还减少了启动过程的压力,因为瞬态队列目前在启动时被移除。
有哪些替代方案?
队列 TTL 应用于在一段时间不活动后自动删除未使用的空闲队列。
独占队列:这些队列在所有与队列的连接被移除后被删除。
不再对经典队列使用发布者确认的 fsync
我们为什么要做出这个决定?
无论是否使用 fsync,仲裁队列都比使用非镜像经典队列提供了更高的数据安全性。手动调用 fsync 会导致性能损失,而让内核决定何时刷新到磁盘则不会。
有哪些替代方案?
客户应使用仲裁队列进行复制和数据安全。
感谢您
感谢您的阅读。如果您对上述内容有任何想法,请填写我们的调查,让我们知道您对提议的更改的感受!