什么是延迟队列?
延迟队列,即消息进入队列后不会立即被消费,只有到达指定时间后,才会被消费。
若有如下需求:
1.下单后,30分钟未支付,取消订单,回滚库存。
2.新用户注册成功7天后,发送短信问候。
其实现方式:
1.定时器
2.延迟队列
但,在RabbitMQ中没有直接提供延迟队列。
不过我们可以使用 TTL + DLX 组合来实现延迟队列
延迟队列的实现测试
工程结构:
spring-rabbitmq-producer.xml中相关配置:
<!--加载配置文件-->
<context:property-placeholder location="classpath:rabbitmq.properties"/>
<!-- 定义rabbitmq connectionFactory -->
<rabbit:connection-factory id="connectionFactory" host="${rabbitmq.host}"
port="${rabbitmq.port}"
username="${rabbitmq.username}"
password="${rabbitmq.password}"
virtual-host="${rabbitmq.virtual-host}"
publisher-confirms="true"
publisher-returns="true"
/>
<!--定义管理交换机、队列-->
<rabbit:admin connection-factory="connectionFactory"/>
<!--定义rabbitTemplate对象操作可以在代码中方便发送消息-->
<rabbit:template id="<