RabbitMQ:高级特性
跳到导航
跳到搜索
持久化机制
RabbitMQ 持久化机制分为:
- 交换器持久化:声明交换机的时候可以通过属性设置是否需要持久化;
// 声明交换机:第三个参数为持久化选项 channel.exchangeDeclare(EXCHANGE_ROUTING_INFORM, BuiltinExchangeType.DIRECT, true);
- 队列持久化:声明队列的时候可以设置队列是否需要持久化;
// 声明队列:第二个参数为持久化选项 channel.queueDeclare(QUEUE_INFORM_EMAIL, true, false, false, null);
- 消息持久化:在发布消息的时候,通过消息属性可以设置,消息是否需要持久化;
// 发送消息:第三个参数为消息属性 //“MessageProperties.PERSISTENT_TEXT_PLAIN”:将消息标记为持久性,确保即使 RabbitMQ 重新启动,队列也不会丢失。 channel.basicPublish("", TASK_QUEUE_NAME, MessageProperties.PERSISTENT_TEXT_PLAIN, message.getBytes(StandardCharsets.UTF_8));
- 队列持久化,不代表消息就是持久化的。
- 不管是持久化的消息还是非持久化的消息都可以被写入到磁盘:
- 持久化消息会同时写入磁盘和内存(加快读取速度);
- 非持久化消息会在内存不够用时,将消息写入磁盘(Rabbitmq重启之后就没有了)。