Erlang/OTP 升级丢失现有的 RabbitMQ 消息

Posted

技术标签:

【中文标题】Erlang/OTP 升级丢失现有的 RabbitMQ 消息【英文标题】:Erlang/OTP upgrade lose existing RabbitMQ messages 【发布时间】:2019-03-26 20:52:00 【问题描述】:

我在本地 Windows 机器上安装了 Erlang/OTP 17RabbitMQ Server 3.4.3。在升级到生产中的较新版本之前,我想在我的本地机器上尝试一下,看看升级是否不会导致任何问题。我正在尝试将它们升级到最新版本 - Erlang/OTP 21RabbitMQ Server 3.7.8。当我升级时,我丢失了所有现有的消息。

我在多个队列中有一些现有的消息。升级 Erlang/OTP (21) 后,我发现所有现有消息都消失了。我什至尝试安装较新的 RabbitMQ 服务器(3.7.8),但我仍然没有在队列中看到我的旧消息。我认为mnesia 数据库将有助于恢复消息。我想要么我不理解这个概念,要么我错过了一些设置。

我不希望我们的生产客户抱怨消息丢失。我在网上找不到关于这个主题的太多帮助。但是,RabbitMQ 文档肯定谈到了Blue-Green Deployment Strategy,从来没有这样做过,所以不确定这对我们的情况是否有帮助,或者它是一种矫枉过正并且有一个更简单的解决方案。另外,要补充一点,我做了所有手动升级。如果有人知道在不丢失现有消息的情况下更好的单节点升级过程,请指导和帮助我。

【问题讨论】:

【参考方案1】:

文档明确指出不能直接从版本3.4.3 升级到版本3.7.8:link。您必须先升级到3.6.16

在您的情况下,使用blue-green upgrade 将是避免必须先升级到3.6.16 之前的版本3.7.8 的唯一方法。

【讨论】:

以上是关于Erlang/OTP 升级丢失现有的 RabbitMQ 消息的主要内容,如果未能解决你的问题,请参考以下文章

Erlang 细节记录

初学者的 Erlang/OTP 行为

Erlang/OTP 发布和 LTS 时间表是啥?

您如何设计基于 Erlang/OTP 的分布式容错多核系统的架构?

Erlang/OTP 生产应用部署简介

Erlang/OTP 18.0 正式版发布