RabbitMQ 在完成一些测试后崩溃了。出于统计原因,需要崩溃时队列中剩余的数据包数。在/var/lib/rabbitmq/mnesia/rabbit@VM_16_11_centos/queues/5PHK4O2BWQQNR6JA7K2PX8355
下,我发现有一堆.idx
文件和一个空的journal .jif
(此时只有一个队列在运行,所以这个文件夹是唯一的选择)
有没有办法用这些文件拯救队列?
附言为了防止删除其他文件,RabbitMQ 保留下来以防止删除其他必要的二进制文件。
最佳答案
我发现这个工具可以读取 RabbitMQ IDX 文件和持久存储 RDQ 文件。然后,我能够一次一条消息将该数据重新导入 RabbitMQ,并让我的消费者正常处理数据。
https://github.com/jeffbryner/rdqdump
对于 future 的预防措施:
队列/交换可以被标记为持久的,这样它可以被重新创建并在任何类型的服务器故障、崩溃或代理重启中幸存下来。 (持久实体可以在服务器重新启动后幸存下来,一旦服务器恢复就会自动重新创建。)
将队列标记为 Durable 并不意味着队列中的消息也将被重新创建。
为此,可以将消息标记为持久性。 (持久消息一旦到达队列就会被写入磁盘,并且只有在它们从持久队列中被消耗(并确认)后才会被标记为垃圾收集。)
关于linux - 在 RabbitMQ 崩溃后有没有办法拯救队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57283130/