什么是TTL
- TTL意为
Time To Live,即生存时间 - RabbitMQ中适用于队列和消息
- 消息:即消息过期时间,比如设置10秒,10秒后如果没有被消费则删除
- 队列:队列中消息的存活时间,从消息入队列开始计算,只要超过了队列的超时时间配置,那么消息会自动的清除
TTL控制台操作
因为之前都是代码操作,还没有在15672控制台操作过,所以我们先使用控制台进行TTL测试
创建Exchange
在Exchange Tab下,添加一个新的Exchange,test_ttl_exchange


成功添加
TTL队列
在Queue Tab下,添加一个新的Queue ,test_ttl_queue

点击下面的红框,就会弹出参数的添加,x-message-ttl就是设置TTL队列的配置

设置绑定关系
在Exchange Tab中点击test_ttl_exchange


投递普通消息
在Queue Tab中点击test_ttl_queue


投递成功后,会发现队列中有一条消息等待消费,这时我们等10秒钟

会发现消息消失了,即过期时间一过便被删除了
投递TTL消息
我们接着测试TTL消息的投递,这时我们就不再TTL队列中测试了,随便找个其他的队列投递
这里我们使用到test01队列,其实对于TTL消息我们在之前讲消息的时候就使用过,通过链式编程,添加Properties信息的时候

主要参数就是expiration

投递完我们再等待10秒

消息成功被删除
TTL代码操作
TTL消息
1 | AMQP.BasicProperties properties = new AMQP.BasicProperties.Builder() |
TTL队列
1 | Map argument = new HashMap(); |
通过创建队列时的最后一个入参arguments添加ttl配置