RabbitMQ消息过期TTL

TTL

TTL全称Time To Live(存活时间/过期时间),当背息到达存活时间后,还没有被裆费,会被自动清除。RabbitMQ可以对消息设置过期时间,也可以对整个队列(Queue)设置过期时间。

RabbitMQ消息过期TTL_第1张图片

队列统一过期设置

    
    <rabbit:queue name="test_queue_ttl" id="test_queue_ttl">
        
        <rabbit:queue-arguments>
            
            <entry key="x-message-ttl" value="100000" value-type="java.lang.Integer">entry>
        rabbit:queue-arguments>

    rabbit:queue>

消息单独过期

      // 消息后处理对象,设置一些消息的参数信息
        MessagePostProcessor messagePostProcessor = new MessagePostProcessor() {
     

            @Override
            public Message postProcessMessage(Message message) throws AmqpException {
     
                //1.设置message的信息
                message.getMessageProperties().setExpiration("5000");//消息的过期时间
                //2.返回该消息
                return message;
            }
        };


        //消息单独过期
        rabbitTemplate.convertAndSend("test_exchange_ttl", "ttl.hehe", "message ttl....",messagePostProcessor);

过期机制

如果设置了消息的过期时间,也设置了队列的过期时间,它以时间短的为准。
队列过期后,会将队列所有消息全部移除。
消息过期后,只有消息在队列顶端,才会判断其是否过期(移除掉)

将队列所有消息全部移除。
消息过期后,只有消息在队列顶端,才会判断其是否过期(移除掉)

你可能感兴趣的:(rabbitmq)