已弃用的功能
概述
随着时间的推移,RabbitMQ 的某些功能不再相关。 有时,必须移除某个功能,以便为更好的替代方案腾出空间。 在我们废弃一个功能之前,我们会遵循一个弃用时间窗口:我们会宣布某个功能已被弃用,并说明原因、用户应如何为此做好准备,以及估计的未来 RabbitMQ 版本,在该版本中,此弃用的功能将被移除且不再受支持。
除了公开声明之外,RabbitMQ 还有一个“已弃用功能”子系统,如果用户正在使用将来会被移除的功能,该子系统可以帮助直接从 Broker 通知用户。
您可以在专用页面中查看实际已弃用功能的列表。
已弃用功能生命周期
“已弃用功能”子系统基于功能标志子系统。 因此,就像功能标志从实验性到稳定再到必需一样,已弃用功能遵循以下阶段
- 默认允许。 用户可以继续使用该功能。 他们只会在日志中收到警告,并且可以使用配置旋钮启动 RabbitMQ,就好像该功能已移除以进行测试一样。
- 默认拒绝。 该功能仍然存在,但开箱即用时不可用,就像已被移除一样。 用户可以从配置中重新启用它。
- 已断开连接。 该功能仍然存在于代码中,但在官方软件包中已编译出来。 用户必须从源代码重新编译 RabbitMQ 才能继续使用它。 请注意,我们不计划经常使用此阶段,如果曾经使用过。
- 已移除。 该功能的代码已消失,无法再使用它。 这相当于必需的功能标志。
检查是否使用了已弃用的功能
除了本网站上记录的已弃用功能的完整列表之外,您还可以使用以下方法查看特定 RabbitMQ 部署的已弃用功能
您可以查询 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