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