已弃用功能
概述
随着时间的推移,RabbitMQ 的一些功能已不再适用。有时,为了给更好的替代方案腾出空间,某个功能必须被移除。在弃用某个功能之前,我们会遵循一个弃用时间窗口:我们会公布某个功能已被弃用,并说明原因、用户应如何准备以及预计在 RabbitMQ 的哪个未来版本中该已弃用功能将被移除且不再支持。
除了公开声明外,RabbitMQ 还拥有一个“已弃用功能子系统”,它可以帮助用户在代理(broker)层面直接收到通知,告知他们正在使用将来会被移除的功能。
您可以在专用页面上查看当前已弃用功能的列表。
已弃用功能的生命周期
“已弃用功能子系统”基于功能标志子系统。因此,就像一个从实验性变为稳定版再到必需版的功能标志一样,已弃用功能也遵循以下阶段:
- 默认允许。用户可以继续使用该功能。他们只能在日志中收到警告,并可以使用配置旋钮以测试目的启动 RabbitMQ,就像该功能已被移除一样。
- 默认禁止。该功能仍然存在,但开箱即用时无法使用,就像它已经被移除一样。用户可以从配置中将其重新启用。
- 已断开连接。该功能仍然存在于代码中,但在官方软件包中已被编译排除。用户必须从源代码重新编译 RabbitMQ 才能继续使用它。请注意,我们不打算频繁使用此阶段,甚至可能从不使用。
- 已移除。该功能代码已不存在,无法再使用。这相当于一个必需的功能标志。
检查是否正在使用已弃用功能
除了本网站上记录的已弃用功能的完整列表外,您还可以使用以下方法查看特定 RabbitMQ 部署的已弃用功能:
- CLI 的
rabbitmq-diagnostics list_deprecated_features命令 - 管理 UI 的“Admin > Deprecated Features”面板
您可以查询 RabbitMQ,以确定节点或集群是否正在积极使用一个或多个已弃用功能。
rabbitmq-diagnostics check_if_any_deprecated_features_are_used
它会列出已使用的已弃用功能(如果有),如果没有使用,则退出码为 0;如果正在使用一个或多个已弃用功能,则退出码为非零。
您可以使用 HTTP API 完成相同操作。
GET /api/deprecated-features/used
信息
请注意,这些查询的结果取决于是否能够检测到已弃用功能的使用。例如,可以检测到经典队列镜像的使用情况。但对于全局 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