RabbitMQ服务器崩溃后队列消息去向及Quorum Queue副本存储位置
RabbitMQ消息持久化与存储相关问题解答
服务器崩溃后队列消息的处理逻辑
消息是否会保留取决于消息和队列的持久化配置:
- 若消息发布时设置了
delivery_mode=2(持久化消息),且队列声明时durable=true(持久化队列),服务器崩溃重启后消息会被保留,因为数据已写入磁盘。 - 若消息或队列任意一方未开启持久化,崩溃后消息会丢失,因为仅存在内存中,未落地存储。
持久化消息的存储位置
RabbitMQ的持久化数据(含持久化消息、队列元数据等)默认存储在节点的Mnesia数据目录,具体路径因环境而异:
- Linux包安装:
/var/lib/rabbitmq/mnesia/rabbit@<主机名>/ - Windows系统:
C:\Users\<用户名>\AppData\Roaming\RabbitMQ\db\rabbit@<主机名>/ - Docker容器:未挂载卷时,路径为容器内的
/var/lib/rabbitmq/mnesia/
Quorum Queue副本的存储位置
Quorum Queue的副本是分布式存储在集群节点上的:
- 每个副本对应存储在集群中一个节点的Mnesia数据目录下(即上述单个节点的存储路径)
- 副本不会集中在某一个节点,而是根据集群配置分散到多个节点,你无法在单个节点找到所有副本,每个节点仅存储自己负责的那部分副本数据
内容的提问来源于stack exchange,提问作者develop
相关产品推荐
相关产品推荐

