龙空技术网

RabbitMQ 消息持久化的正确打开方式

不凡的牛仔很忙 140

前言:

此刻同学们对“docker rabbitmq持久化”大概比较看重,看官们都需要分析一些“docker rabbitmq持久化”的相关内容。那么小编同时在网摘上网罗了一些关于“docker rabbitmq持久化””的相关资讯,希望各位老铁们能喜欢,兄弟们快快来了解一下吧!

RabbitMQ 支持消息持久化,即将消息存储在磁盘上,以防消息丢失。要启用 RabbitMQ 的消息持久化,需要进行以下设置:

1. 启用消息持久化

打开 RabbitMQ 的配置文件(通常在 /etc/rabbitmq/rabbitmq.config 或 c:/rabbitmq/rabbitmq.config),将 {persistent, false} 改为 {persistent, true}。

[  {rabbit, [     {persistent, true}  ]}].

重启 RabbitMQ 服务以使配置生效。

2. 设置队列持久化

当创建队列时,将 durable 参数设置为 true。

channel.queueDeclare("myqueue", { durable: true });

这会创建一个持久化队列,队列信息会存储在磁盘上。

3. 设置消息持久化

在发布消息时,将消息属性中的 deliveryMode 设置为 2。

channel.publish("", "myqueue", null, Buffer.from("some message"));channel.publish("", "myqueue", {deliveryMode: 2}, Buffer.from("some message"));

这会导致该消息被持久化,存储到磁盘上。

4. 确保所有的写操作都已刷新到磁盘

RabbitMQ 会定期刷新内存中的消息到磁盘。但是,为了确保消息不丢失,在关闭应用程序之前,需要显式调用 sync 命令:

channel.connection.sync();  // flush I/O buffers 

这会阻塞当前线程,直到所有消息都持久化到磁盘为止。

所以,启用 RabbitMQ 消息持久化的主要步骤是:

1. 配置启用消息持久化

2. 声明持久化队列

3. 发送持久化消息(deliveryMode=2)

4. 调用 sync 同步刷新消息到磁盘

这样设置后,即使 RabbitMQ 服务重启,消息也不会丢失,实现了持久化。

标签: #docker rabbitmq持久化