当前位置: 首页 > news >正文

RabbitMQ中TTL

目录

  • 一、TTL
    • 1.控制后台演示消息过期
    • 2.代码实现
      • 2.1 队列统一过期
      • 2.2 消息过期

一、TTL

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

1.控制后台演示消息过期

① 修改管理后台界面,增加队列
参数:表示过期时间,单位毫秒 ,10000表示10秒
在这里插入图片描述
② 增加交换机
在这里插入图片描述
③ 绑定队列
在这里插入图片描述
④ 发送消息
Delivery mode:2-Persistent表示需要进行持久化
在这里插入图片描述
⑤ 查看消息,可以看到消息,但十秒之后,消息自动消失,因为我们设置了十秒消息过期
在这里插入图片描述

2.代码实现

2.1 队列统一过期

在队列后面添加.ttl(10000)为10s

import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class RabbitMQConfig {public static final String EXCHANGE_NAME = "boot_topic_exchange2";public static final String QUEUE_NAME = "boot_queue666";// 1 交换机@Bean("bootExchange")public Exchange bootExchange(){return ExchangeBuilder.topicExchange(EXCHANGE_NAME).durable(true).build();}//2.Queue 队列@Bean("bootQueue")public Queue bootQueue(){return QueueBuilder.durable(QUEUE_NAME).ttl(10000).build();}//3. 队列和交互机绑定关系 Binding/*1. 知道哪个队列2. 知道哪个交换机3. routing keynoargs():表示不指定参数*/@Beanpublic Binding bindQueueExchange(@Qualifier("bootQueue") Queue queue,@Qualifier("bootExchange") Exchange exchange){return BindingBuilder.bind(queue).to(exchange).with("confirm").noargs();}
}

启动发送

    @Testpublic void testConfirm() {//3. 发送消息for (int i = 0; i < 10; i++) {rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_NAME, "confirm", "消息");//成功}}

查看控制台,发现有10条消息,十秒之后自动过期
在这里插入图片描述

2.2 消息过期

    /*** TTL:过期时间*  1. 队列统一过期*  2. 消息单独过期* 如果设置了消息的过期时间,也设置了队列的过期时间,它以时间短的为准。*/@Testpublic void testMessageTtl() {// 消息后处理对象,设置一些消息的参数信息MessagePostProcessor messagePostProcessor = new MessagePostProcessor() {@Overridepublic Message postProcessMessage(Message message) throws AmqpException {//1.设置message的信息// 第二个方法:消息的过期时间 ,5秒之后过期message.getMessageProperties().setExpiration("5000");//2.返回该消息return message;}};//消息单独过期rabbitTemplate.convertAndSend("test_exchange_ttl","ttl.hehe","message ttl....",messagePostProcessor);}

运行程序,查看后台管理系统
在这里插入图片描述

http://www.lryc.cn/news/44934.html

相关文章:

  • Ceres简介及示例(4)Curve Fitting(曲线拟合)
  • 音质最好的骨传导蓝牙耳机有哪些,推荐几款不错的骨传导耳机
  • 计算机操作系统安全
  • 超详细从入门到精通,pytest自动化测试框架实战教程-用例标记/执行(三)
  • Java SE 基础(5) Java 环境的搭建
  • 银行数字化转型导师坚鹏:银行对公客户数字化场景营销案例萃取
  • get和post的区别
  • Java调用Oracle存储过程
  • ubuntu如何设置qt环境变量
  • 高管对谈|揭秘 NFT 技术背后的研发方法论
  • 是面试官放水,还是企业实在是缺人?这都没挂,字节原来这么容易进...
  • JVM 本地方法栈
  • GPT-4老板:AI可能会杀死人类,已经出现我们无法解释的推理能力
  • 弹性盒布局
  • 第13章_事务基础知识
  • LeetCode笔记:Biweekly Contest 101
  • new和malloc两个函数详细实现与原理分析
  • [ROC-RK3568-PC] [Firefly-Android] 10min带你了解LCD的使用
  • 【redis】redis分布式锁
  • UEditorPlus v3.0.0 接口请求头参数,插入换行优化,若干问题优化
  • LabVIEW 2015介绍
  • 大一被忽悠进了培训班
  • 编写一个存储过程,输入一个日期,判定其距离年底还有多少天
  • HTB-Inject
  • java基础知识——13.类与对象
  • 北邮22信通:(10)第三章 3.2栈的实现
  • Vue3之使用js实现动画
  • 金三银四,你准备好面试了吗? (附30w字软件测试面试题总结)
  • 【C语言学习】数组
  • ElasticSearch序列 - SpringBoot整合ES:根据指定的 ids 查询