ttl
参考demo:G:\学习资料\java\java学习文档\java技术文档\消息队列文档\rabbimitmq\cd-xufei-rabbiitmq-parent\cd-xufei-rabbitmq-01 => ttl
场景:比如下单之后 一段时间 我们的系统未处理这个下单的话 那么这个下单就失败了 简单的跟你说 这个队列中的数据 如果超过了 指定的时间 那么这个队列的数据 就会被清空 这种队列 就称为 TTL队列
代码示例如下:
public class Producer {
/**
* 下面这个模拟的是TTL队列
*/
private static final String QUEUE_NAME = "queue_ttl";
public static void main(String[] args) throws Exception {
// 获取连接
Connection connection = ConnectionUtils.getConnection();
// 建立通道
Channel channel = connection.createChannel();
// 申明一个队列
/**
*第一个参数:队列的名字
*第二个参数:是否持久化 :这个数据 发送到队列去的时候 这个数据 是否要持久化到数据库中去
*第三个参数:是否排外
* 第一个意思:是否允许这个通道以外的 其他消费者来消费这个数据
* 第二个意思:连接关闭之后 这个队列是否自动删除
*第四个参数:是否自动删除
* 表示的是 当最后一个连接退出的时候是否要删除这个队列
*第五个参数:创建队列 付带的头的信息(TTL 死信队列)
*
*/
// 申明队列是一个TTL队列
// 参数解析:5000 5秒过期 单位 milliseconds
// 参数解析:x-message-ttl TTL 队列
Map<String, Object> maps = new HashMap<>();
maps.put("x-message-ttl", 5000);
channel.queueDeclare(QUEUE_NAME, false, false, false, maps);
// 生产者 要向这个队列中 发送一条消息
channel.basicPublish("", QUEUE_NAME, null, ("TTL队列的测试").getBytes());
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
最近更新: 2025/01/07, 09:25:39