前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RabbitMq设置TTL

RabbitMq设置TTL

作者头像
写一点笔记
发布2022-08-11 15:54:49
1.2K0
发布2022-08-11 15:54:49
举报

time to live:过期时间,RabbitMq可以对消息和队列设置ttl.

1.设置消息的ttl

设置消息的ttl有两种方式,一种是针对一条消息,第二种是针对队列中的所有消息。如果两种ttl都设置了,那么就选择tll小的执行。如果消费时间超过ttl,那么消息就不会被消费者消费,从而变成死信。

TTL可以通过参数进行定义。

@Bean
public Queue AAQueue() {
    Map map=new HashMap<>();
    map.put("x-message-ttl",6000);
    return new Queue("AA",true,false,false,map);
}

针对每条消息设置ttl则需要我们在发送消息的时候设置expiration的属性。

    /**
     * 处理消息体,添加消息id和消息的内容类型
     * @param message 消息体
     * @return
     */
    private Message dealMessage(Object message) {
        byte[] body = JSON.toJSONBytes(message, SerializeConfig.globalInstance);
        //设置消息相关属性
        MessageProperties messageProperties = new MessageProperties();
        messageProperties.setMessageId(UUID.randomUUID().toString());
        messageProperties.setContentType(MediaType.APPLICATION_JSON_VALUE);
        messageProperties.setExpiration("60000");
        return new Message(body, messageProperties);
    }

2.设置队列的ttl

使用配置x-expires修饰的消息队列会在其指定时间内,未被使用将会被删除!

    @Bean
    public Queue AAQueue() {
        Map map=new HashMap<>();
        map.put("x-message-ttl",6000);
        map.put("x-expires",6000);
        return new Queue("AA",true,false,false,map);
    }
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 写点笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列
腾讯云消息队列 TDMQ 是分布式架构中的重要组件,提供异步通信的基础能力,通过应用解耦降低系统复杂度,提升系统可用性和可扩展性。TDMQ 产品系列提供丰富的产品形态,包含 CKafka、RocketMQ、RabbitMQ、Pulsar、CMQ 五大产品,覆盖在线和离线场景,满足金融、互联网、教育、物流、能源等不同行业和场景的需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档