TTL
TTL(Time to Live,过期时间)即过期时间。RabbitMQ 可以对消息和队列设置 TTL。当消息到达存活时间之后,还没有被消费,就会被自动清除。
在业务场景中,例如网上购物下单超过 24 小时未付款订单会自动取消,或申请退款后超过 7 天未被处理则自动退款,均可利用此机制实现。
添加配置
spring:
application:
name: rabbit-extensions-demo
rabbitmq:
addresses: amqp://study:[email protected]:5672/extension
常量类
public class Constants {
// ttl
public static final String TTL_QUEUE = "ttl.queue";
public static final String TTL_QUEUE2 = "ttl2.queue";
public static final String TTL_EXCHANGE = "ttl.exchange";
}
消息的 TTL
声明队列和交换机并绑定二者关系
import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import rabbitextensionsdemo.constant.Constants;
@Configuration
public {
Queue {
QueueBuilder.durable(Constants.TTL_QUEUE).build();
}
DirectExchange {
ExchangeBuilder.directExchange(Constants.TTL_EXCHANGE).build();
}
Binding {
BindingBuilder.bind(queue).to(exchange).with().noargs();
}
}


