跳至主内容
版本:4.3

已弃用功能

概述

随着时间的推移,RabbitMQ 的某些功能已不再适用。有时,为了引入更好的替代方案,必须移除旧功能。在弃用某个功能之前,我们会遵循一个弃用时间窗口:我们会宣布该功能已被弃用,并说明原因、用户应如何准备,以及预计在 RabbitMQ 的哪个未来版本中该功能将被移除且不再受支持。

除了公开公告外,RabbitMQ 还拥有一个“已弃用功能子系统”,如果用户正在使用未来将被移除的功能,该系统会直接从代理(broker)端发出通知。

您可以在专门的页面查看实际已弃用功能的列表

已弃用功能的生命周期

“已弃用功能子系统”基于功能标志子系统(Feature flags subsystem)。因此,就像功能标志从实验性变为稳定,再变为必需一样,已弃用功能遵循以下阶段:

  1. 默认允许(Permitted by default)。用户可以继续使用该功能。他们只会收到日志警告,并可以使用配置项以测试目的启动 RabbitMQ,表现得就像该功能已被移除一样。
  2. 默认拒绝(Denied by default)。该功能仍然存在,但开箱即用时不可用,就像它已经被移除一样。用户可以通过配置将其重新开启。
  3. 断开连接(Disconnected)。该功能在代码中仍然存在,但在官方包中被编译剔除。用户必须从源代码重新编译 RabbitMQ 才能继续使用它。请注意,我们计划很少(甚至从不)使用此阶段。
  4. 移除(Removed)。该功能的代码已删除,且无法再使用。这等同于必需的功能标志。

检查是否使用了已弃用功能

除了本网站记录的完整已弃用功能列表外,您还可以通过以下方式查看特定 RabbitMQ 部署中已弃用的功能:

您可以查询 RabbitMQ,以了解节点或集群是否正在积极使用一个或多个已弃用的功能。

rabbitmq-diagnostics check_if_any_deprecated_features_are_used

它会列出正在使用的已弃用功能(如果有),如果没有使用,则退出状态码为 0;如果正在积极使用一个或多个已弃用功能,则返回非零值。

您也可以使用 HTTP API 执行相同的操作。

GET /api/deprecated-features/used
信息

请注意,这些查询的结果取决于是否可以检测到已弃用功能的使用情况。例如,可以检测是否使用了经典队列镜像(classic queue mirroring),但对于全局 QoS(global QoS)则无法检测。

配置已弃用功能的行为

如上所述,用户可以决定关闭某个已弃用的功能,以测试 RabbitMQ 及其应用程序在功能被移除后的行为。

# Try RabbitMQ as if the deprecated feature was gone.
deprecated_features.permit.some_deprecated_feature = false

另一位用户可能决定重新开启一个“默认拒绝”的已弃用功能,以便在升级 RabbitMQ 的同时,争取更多时间来调整其应用程序。

# Permit a deprecated feature that is denied by default.
deprecated_features.permit.some_deprecated_feature = true
© . This site is unofficial and not affiliated with VMware.