rabbitmq-server 开始通过持久队列丢失数据

rabbitmq-server start losing data over durable queues

在 windows 上,当我使用 rabbitmq-server start/stop 命令时,RabbitMQ 持久队列上的数据被删除。当我启动 RabbitMQ 服务器时,似乎重新创建了队列。

如果我使用 rabbitmqctl stop_app/start_app,我不会丢失任何数据。为什么?

如果我的服务器出现故障会发生什么情况?如果发生故障,我如何确定我不会丢失数据?

使队列持久化是不够的。可能您还需要将交换声明为持久的以及发送 'persistent' 消息。

在 Java 中,您将使用:

channel.basicPublish("", "sample_queue",
        MessageProperties.PERSISTENT_TEXT_PLAIN, // note that this parameter is not null!
        message.getBytes())

配置问题:我从 rabbitmq sbin 目录启动 rabbitmq。我 re-installed rabbitmq 并将 rabbitmq 添加到 windows 服务。现在数据丢失的问题在我的电脑上解决了。当我 start/stop windows 服务时,rabbitmq 没有丢失任何数据