rabbitmq高级特性 TTL

概念

使用web页面创建ttl队列


填上参数即可快速创建ttl队列

代码实现ttl队列

同理我们在构建时给出对应的值即可

    @Bean("bootQueue")
    public Queue bootQueue(){
        return QueueBuilder.durable(QUEUE_NAME).ttl(10000).build();
    }

发送数据后 会发现10秒后消息自动被删除了

信息单独设置过期时间

rabbitmq为了性能 如果单独为信息设置了过期时间 那么只有当信息位于顶部要被取出时才会判断是否过期

实现也非常简单 代码如下:

    @Test void send(){
        //消息后处理对象,设置一些信息的参数信息
        MessagePostProcessor processor = new MessagePostProcessor() {
            @Override
            public Message postProcessMessage(Message message) throws AmqpException {
                message.getMessageProperties().setExpiration("5000");//设置过期时间
                return message;
            }
        };
        //将该对象也传进去
        for (int i = 0; i < 10; i++) {
            rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_NAME,"boot.haha","message: "+i,processor);
        }
    }

这样就会为信息单独设置5秒的过期时间

posted @ 2021-10-05 16:30  一个经常掉线的人  阅读(104)  评论(0)    收藏  举报