RabbitMQ 中的TTL(Time To Live)是指消息在队列中的最大存活时间。当消息在队列中的存活时间超过设定的 TTL 阈值时:
如果队列已配置死信队列(Dead Letter Exchange),消息会被自动路由至该队列。
如果队列未配置死信队列,消息将被系统自动丢弃。
支持通过 Queue 属性配置和消息单独设置两种方式配置消息 TTL。
通过 Queue 属性设置:Queue 中的所有消息具有相同的 TTL。
对消息单独设置:每条消息可以配置不同的 TTL,通过客户端配置。
约束与限制
若同时设置了 Queue TTL 和消息 TTL 时,以较小的 TTL 为准。
配置 Queue TTL

配置 Message TTL
以下为一个 Java 客户端示例,通过在
channel.basicPublish
方法中加入expiration
参数设置 TTL,单位为 ms。byte[] messageBodyBytes = "Hello, world!".getBytes();AMQP.BasicProperties properties = new AMQP.BasicProperties.Builder().expiration("80000") //设置消息的 TTL 为80000 ms.build();channel.basicPublish("test-exchange", "routing-key", properties, messageBodyBytes);