美文网首页
RabbitMQ 消息过期时间(TTL) --- 2022-04

RabbitMQ 消息过期时间(TTL) --- 2022-04

作者: 一位先生_ | 来源:发表于2022-05-03 11:51 被阅读0次

    RabbitMQ的消息过期时间(TTL)下面两种方式进行设置

    1. 通过队列属性设置,队列中所有消息都有相同的过期时间。
    2. 对每条消息单独设置过期时间,每条消息的TTL可以不同。如果两种方法一起使用,则消息的TTL以两者之间较小的那个数值为准。

    提示:对于第一种设置队列属性的方法,一旦消息过期,就会从队列中抹去,而在第二种方法中,即使消息过期,也不会马上从队列中删除,因为每条消息是否过期是在消息投递到消费者之前才进行检查。

    下面使用Golang进行演示如何设置,其他开发语言类似。

    设置队列TTL

    通过队列属性(x-message-ttl)设置消息过期时间。

        // 队列属性
        props := make(map[string]interface{})
        // 消息过期时间为60秒
        props["x-message-ttl"] = 60000
    
        q, err := ch.QueueDeclare(
            "tizi365.ttl.hello", // 队列名
            true,   // 是否持久化队列
            false,
            false,
            false,
            props, // 设置队列属性
        )
    
    

    设置消息TTL

    通过消息属性设置消息过期时间

    err = ch.Publish(
                "tizi365",     // 交换机名
                "", // 路由参数
                false,
                false,
                amqp.Publishing{
                    Expiration: "30000", // 过期时间为30秒
                    ContentType: "text/plain",
                    Body:        []byte(body),
                })
    

    相关文章

      网友评论

          本文标题:RabbitMQ 消息过期时间(TTL) --- 2022-04

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