linux - 在 RabbitMQ 崩溃后有没有办法拯救队列?

标签 linux centos rabbitmq queue

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/

相关文章:

linux - 从 NFS 安装文件夹开始更改 bash 脚本中的网络 ip

linux - 如何启动 docker 容器及其参数更改?

java - 如何在 Linux centOS 中安装 JDK

python - 在 AWS 上拍摄 RabbitMq 实例的快照是否会损害我的应用程序产品?

java - RabbitMQ 和 channel Java 线程安全

java - 为什么 shell 脚本不会从 Java Runtime.exec 执行,而是从命令行执行?

c# - linux 位置下的 Mono 共享库

linux - NFS用户权限问题

spring - 如何使用 Spring Rabbitmq 连接到多个 Rabbitmq 节点?

linux - git clone 和 cd 进去