在 Windows 上,当我使用rabbitmq-server
start
/stop
命令时,会删除 RabbitMQ 持久队列上的数据。当我启动 RabbitMQ 服务器时,似乎重新创建了队列。
如果我使用rabbitmqctl
stop_app
/ start_app
,我不会丢失任何数据。为什么?
如果我的服务器出现故障会发生什么情况?我如何确定我不会丢失数据?
在 Windows 上,当我使用rabbitmq-server
start
/stop
命令时,会删除 RabbitMQ 持久队列上的数据。当我启动 RabbitMQ 服务器时,似乎重新创建了队列。
如果我使用rabbitmqctl
stop_app
/ start_app
,我不会丢失任何数据。为什么?
如果我的服务器出现故障会发生什么情况?我如何确定我不会丢失数据?
配置问题:我从 rabbitmq sbin 目录启动 rabbitmq。我重新安装了rabbitmq并将rabbitmq添加到Windows服务中。现在数据丢失问题在我的电脑上解决了。当我启动/停止 windows 服务时,rabbitmq 不会丢失任何数据
使队列持久是不够的。可能您还需要将交换声明为持久的以及发送“持久”消息。
在 Java 中,您将使用:
channel.basicPublish("", "sample_queue",
MessageProperties.PERSISTENT_TEXT_PLAIN, // note that this parameter is not null!
message.getBytes())