在Windows上,当我使用rabbitmq-server
start
/stop
命令时,删除了RabbitMQ耐用队列的数据。当我启动RabbitMQ服务器时,似乎已重新创建了队列。
如果我使用rabbitmqctl
stop_app
/start_app
,我不会丢失任何数据。为什么?
如果我的服务器下降会发生什么,我该如何确定我不会丢失数据?
配置问题:我是从RabbitMQ SBIN目录启动RabbitMQ。我重新安装了RabbitMQ,并将RabbitMQ添加到Windows服务中。现在,我的计算机上解决了数据丢失问题。当我启动/停止Windows服务时,RabbitMQ不会丢失任何数据
使队列耐用是不够的。也许您还需要将Exchange声明为耐用并发送"持久"消息。
在Java中,您将使用:
channel.basicPublish("", "sample_queue",
MessageProperties.PERSISTENT_TEXT_PLAIN, // note that this parameter is not null!
message.getBytes())