使用场景
在生产过程中,难免会发生服务器宕机的事情,RabbitMQ也不例外,可能由于某种特殊情况下的异常而导致RabbitMQ宕机从而重启,那么这个时候对于消息队列里的数据,包括交换机、队列以及队列中存在消息恢复就显得尤为重要了。RabbitMQ本身带有持久化机制,包括交换机、队列以及消息的持久化。持久化的主要机制就是将信息写入磁盘,当RabbtiMQ服务宕机重启后,从磁盘中读取存入的持久化信息,恢复数据。
设置交换器持久化
(1)登录管理控制台。
(2)进入RabbitMQ管理控制台。
(3)在实例列表页在操作列,目标实例行点击“管理”。
(4)点击“交换器管理”后,点击“新建”按钮。
(5)点击“新建”后出现以下窗口,是否持久化选择是。
设置队列持久化
(1)登录管理控制台。
(2)进入RabbitMQ管理控制台。
(3)在实例列表页在操作列,目标实例行点击“管理”。
(4)点击“队列管理”后,点击“新建”按钮。
(5)点击“新建”后出现以下窗口,是否持久化选择是。
设置消息持久化
Queue设置为持久化后,通过设置“MessageProperties”为“PERSISTENT_TEXT_PLAIN”来向Queue发送持久消息。
java客户端示例为:
import com.rabbitmq.client.MessageProperties;
channel.basicPublish("", "my_queue",MessageProperties.PERSISTENT_TEXT_PLAIN, message.getBytes());