Khepri FAQ
我看到 RabbitMQ 代码中将 khepri_db 功能标志标记为实验性。它受支持吗?
是的,从 RabbitMQ 4.0 开始,RabbitMQ 团队将支持使用 Khepri 的节点。同样,官方也会提供升级路径以迁移至未来版本。
不过,RabbitMQ 3.13.x 中的 Khepri 是不受支持的。如果已经在 3.13.x 节点上启用了 Khepri,则无法直接升级到 4.x 及更高版本。您必须使用蓝绿部署将所有内容迁移到另一个节点或集群。
我看到 RabbitMQ 代码中将 khepri_db 功能标志标记为实验性。未来是否可以升级到更高版本?
是的;请参阅上一个问题及答案。
为什么即使我没有启用 khepri_db,日志中也会显示“Starting Khepri-based RabbitMQ metadata store”(正在启动基于 Khepri 的 RabbitMQ 元数据存储)?
Khepri 元数据存储总是会进行初始化,即使 RabbitMQ 并未使用它,而是继续使用 Mnesia 作为后端。
原因是 khepri_db 功能标志可以从任何节点启用。该节点必须能够与集群中所有节点上的 Khepri 通信。因此,Khepri 会在所有地方启动,以便在未来启用时能够立即就绪。
在此期间,它不会占用资源,也不会干扰节点或集群的运行。
为什么即使我没有启用 khepri_db,日志中也会显示“Khepri-based RabbitMQ metadata store ready”(基于 Khepri 的 RabbitMQ 元数据存储已就绪)?
请参阅上一个问题及答案。
是否可以禁用 Khepri?
不能。一旦执行了迁移,就不支持回退到 Mnesia。
另一种替代方案是使用蓝绿部署将所有内容迁移到另一个节点或集群,并停用已启用 Khepri 的节点。
是否可以将基于 Mnesia 的节点的定义导出并导入到基于 Khepri 的节点中?
是的。定义与元数据存储无关,可以在 RabbitMQ 节点中导入,而不论导出定义的节点或导入定义的节点使用了哪种元数据存储后端。