RabbitMQ崩溃后是否有办法挽救队列?

时间:2019-07-31 04:20:41

标签: linux centos rabbitmq queue

完成某些测试后,RabbitMQ崩溃了。出于统计原因,崩溃时需要保留在队列中的数据包数量。在/var/lib/rabbitmq/mnesia/rabbit@VM_16_11_centos/queues/5PHK4O2BWQQNR6JA7K2PX8355下,我发现有一堆.idx文件和一个空journal.jif(当时只有一个队列在运行,因此该文件夹是唯一的选择)

有没有办法挽救这些文件的队列?

P.S。为了防止删除其他文件,RabbitMQ保持向下状态以防止删除其他必要的二进制文件。

1 个答案:

答案 0 :(得分:1)

我发现此工具可以读取RabbitMQ IDX文件和持久性存储RDQ文件。然后我能够一次将一条数据重新导入到RabbitMQ中,并让我的使用者正常处理数据。

https://github.com/jeffbryner/rdqdump

对于将来的预防措施:

可以将队列/交换标记为“持久”,以便将其重新创建并在任何类型的服务器故障,崩溃或代理重新启动中幸免。 (耐用实体可以在服务器重新启动后自动重新创建,因此可以在服务器重新启动后幸存下来。)

将队列标记为“持久”并不意味着也将重新创建队列中的消息。

为此,可以将消息标记为“持久”。 (持久性消息到达队列后将立即写入磁盘,并且只有从持久性队列中消耗(并确认)后,它们才会被标记为垃圾回收。)