美文网首页
RabbitMQ 消息持久化机制(消息不丢) --- 2022-

RabbitMQ 消息持久化机制(消息不丢) --- 2022-

作者: 一位先生_ | 来源:发表于2022-05-07 01:35 被阅读0次

    RabbitMQ持久化机制分为队列持久化、消息持久化、交换器持久化。不管是持久化的消息还是非持久化的消息都可以被写入到磁盘。

    持久化消息会同时写入磁盘和内存(加快读取速度),非持久化消息会在内存不够用时,将消息写入磁盘(Rabbitmq重启之后就没有了)。

    Rabbitmq队列持久化

    声明队列的时候可以设置队列是否需要持久化
    Golang的队列声明方式

    q, err := ch.QueueDeclare(
      "hello", // 队列名字
      true,   // 队列是否持久化
      false,
      false,
      false,
      nil,
    )
    
    

    提示:其他开发语言类似,在声明队列的时候可以设置。

    Rabbitmq交换机持久化

    声明交换机的时候可以通过属性设置是否需要持久化
    golang语言声明方式:

    err = ch.ExchangeDeclare(
            "tizi365",   // 交换机名字
            "fanout", // 交换机类型
            true,     // 是否持久化
            false,    
            false,   
            false, 
            nil, 
        )
    
    

    提示:其他开发语言类似,在声明交换机的时候可以设置。

    Rabbitmq消息持久化

    在发布消息的时候,通过消息属性可以设置,消息是否需要持久化。

    提示:队列持久化,不代表消息就是持久化的。

    golang语言消息发布方式:

    err = ch.Publish(
                "tizi365",     // 交换机
                "", // 路由参数
                false, 
                false,
                amqp.Publishing{
                    DeliveryMode:2,  // 消息投递模式,1代表非持久化,2代表持久化,
                    ContentType: "text/plain",
                    Body:        []byte(body),
                })
    

    相关文章

      网友评论

          本文标题:RabbitMQ 消息持久化机制(消息不丢) --- 2022-

          本文链接:https://www.haomeiwen.com/subject/llifsrtx.html