RabbitMQ:高级特性

来自Wikioe
Eijux讨论 | 贡献2021年5月25日 (二) 02:13的版本 →‎持久化机制
跳到导航 跳到搜索


持久化机制

RabbitMQ 持久化机制分为:

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