首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
30 篇文章
1
可视化接口管理平台 YApi,让你轻松搞定 API 的管理问题
2
面试必考:秒杀系统如何设计?
3
Spring Boot 中的线程池,这也太好用了!
4
用了很多年的 CMS 垃圾收集器,终于换成了 G1,真香!!
5
雪花算法到底是啥原理?附 Java 实现!
6
SpringBoot:优雅地处理全局异常
7
七种分布式事务的解决方案,一次讲给你听!
8
RabbitMQ 死信队列是什么鬼?
9
RabbitMQ 中的消息还能过期?
10
来,通过 Excel 来认识神器——POI
11
使用easypoi导出excel
12
图文并茂:AQS 是怎么运行的?
13
使用 Docker 部署 Spring Boot 项目,带劲!!
14
写了个牛逼的日志切面,甩锅更方便了!
15
终于有人把 Spring 循环依赖讲清楚了!
16
免费获取 IntelliJ IDEA 激活码的 6 种方式!
17
Spring Boot 如何快速集成 Redis 哨兵?
18
10w+ Excel 数据导入,怎么优化?
19
10 个牛逼的单行代码编程技巧,你会用吗?
20
Logback 配置文件这么写,TPS 提高 10 倍!
21
18 个示例带你掌握 Java 8 日期时间处理!
22
用户密码到底要怎么加密存储?
23
Spring Cloud 如何动态刷新 Git 仓库配置?
24
为什么微服务一定要有网关?
25
牛逼哄哄的数据库连接池,底层原理是个啥?
26
如何快速安全的插入千万条数据?
27
Redis 是怎么实现 “附近的人” 的?
28
20 亿的 URL 集合,如何快速判断其中一个?
29
不用找了,大厂在用的分库分表方案,都在这了!
30
Java 程序员常犯的 10 个 SQL 错误!

RabbitMQ 中的消息还能过期?

Java技术栈

www.javastack.cn

关注阅读更多优质文章

作者:海向 来源:www.cnblogs.com/haixiang/p/10905189.html

TTL 是 Time To Live 的缩写,也就是生存时间。

RabbitMQ 支持消息的过期时间,在消息发送时可以进行指定。

RabbitMQ 支持队列的过期时间,从消息入队列开始计算,只要超过了队列的超时时间配置,那么消息会自动的清除。

这与 Redis 中的过期时间概念类似。我们应该合理使用 TTL 技术,可以有效的处理过期垃圾消息,从而降低服务器的负载,最大化的发挥服务器的性能。

RabbitMQ allows you to set TTL (time to live) for both messages and queues. This can be done using optional queue arguments or policies (the latter option is recommended). Message TTL can be enforced for a single queue, a group of queues or applied for individual messages. RabbitMQ允许您为消息和队列设置TTL(生存时间)。这可以使用可选的队列参数或策略来完成(建议使用后一个选项)。可以对单个队列,一组队列强制执行消息TTL,也可以为单个消息应用消息TTL。 ——摘自 RabbitMQ 官方文档

1.消息的 TTL

我们在生产端发送消息的时候可以在 properties 中指定 expiration属性来对消息过期时间进行设置,单位为毫秒(ms)。

代码语言:javascript
复制
/**
* deliverMode 设置为 2 的时候代表持久化消息
* expiration 意思是设置消息的有效期,超过10秒没有被消费者接收后会被自动删除
* headers 自定义的一些属性
*/
//5. 发送
Map<String, Object> headers = new HashMap<String, Object>();
headers.put("myhead1", "111");
headers.put("myhead2", "222");

AMQP.BasicProperties properties = new AMQP.BasicProperties().builder()
    .deliveryMode(2)
    .contentEncoding("UTF-8")
    .expiration("100000")
    .headers(headers)
    .build();
String msg = "test message";
channel.basicPublish("", queueName, properties, msg.getBytes());

我们也可以后台管理页面中进入 Exchange 发送消息指定expiration

2.队列的 TTL

我们也可以在后台管理界面中新增一个 queue,创建时可以设置 ttl,对于队列中超过该时间的消息将会被移除。

你 Get 了吗?

下一篇
举报
领券