RabbitMQ高级特性------TTL

TTL:Time To Live 过期时间/存活时间
当消息到达指定存活时间之后还没有被消费,那么消息就会被清除
RabbitMQ可以对消息设置过期时间,也可以对消息队列设置过期时间

队列统一过期:
设置队列过期,使用参数:x-message-ttl,单位是毫秒,会对整个队列消息同一过期

    @Test
    public void testTTL(){
        for (int i = 0; i < 10; i++) {
            rabbitTemplate.convertAndSend("test_exchange_ttl","ttl.hehe","message ttl");
        }
    }

RabbitMQ高级特性------TTL_第1张图片
消息单独过期:
设置消息过期时间使用参数:expiration,单位也是毫秒,如果对消息和整个队列都设置了过期时间那么就以短的为主。

 @Test
    public void testTTL(){

        MessagePostProcessor messagePostProcessor= new MessagePostProcessor(){

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

            rabbitTemplate.convertAndSend("test_exchange_ttl","ttl.hehe","message ttl",messagePostProcessor);

    }

你可能感兴趣的:(消息队列,java-rabbitmq,rabbitmq,java)