配置 RabbitMQ TTL

最近更新时间:2025-08-26 14:59:12

我的收藏
RabbitMQ 中的TTL(Time To Live)是指消息在队列中的最大存活时间。当消息在队列中的存活时间超过设定的 TTL 阈值时:
如果队列已配置死信队列(Dead Letter Exchange),消息会被自动路由至该队列。
如果队列未配置死信队列,消息将被系统自动丢弃。
支持通过 Queue 属性配置和消息单独设置两种方式配置消息 TTL。
通过 Queue 属性设置:Queue 中的所有消息具有相同的 TTL。
对消息单独设置:每条消息可以配置不同的 TTL,通过客户端配置。
更多关于消息 TTL 的说明,请参考TTL

约束与限制

若同时设置了 Queue TTL 和消息 TTL 时,以较小的 TTL 为准。

配置 Queue TTL

在创建 Queue 时,在常用参数中配置消息 TTL。具体步骤请参考创建 Queue


配置 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);