rabbitmq的死信队列

消息在队列中的过期时间可以通过两种方式设置

1.设置队列的x-message-ttl
2.每次构造消息的时候为每个消息设置过期时间new AMQP.BasicProperties.Builder().expiration("6000");

两者的区别是队列中设置x-message-ttl,则队列中的没条消息的可存活时间都是一样的(有一种例外是消息本身也设置了过期时间,如果过期时间小于x-message-ttl设置的过期时间,则按消息自身的过期时间来计算),也就是你设置的时间(默认是秒),而设置没条消息的过期时间,对应没条消息,会在你取出消息的时候判断消息是否过期,也就是说消息在MQ里面的真正存活时间和可能大于你设定的时间,只是超过设定时间之后消息是取不出来的,但是资源任然在占用。
具体使用请参考:

RabbitMQ之TTL(Time-To-Live 过期时间)

使用RabbitMQ实现延迟任务

你可能感兴趣的:(rabbitmq的死信队列)