本文目录
一、什么是延迟队列?
先来说一下什么是延迟队列,延迟队列就是消息进入队列之后不会立即被消息,只有达到指定时间后,才会被消费.
常见需求: 1、在网上商城下单后,30分钟未支付,取消订单,回滚库存;
2、新用户注册成功7天后,发送短信.
实现方法: 1、定时器 2、延迟队列
但RabbitMQ未提供延迟队列功能,但是可以使用**TTL+死信队列(DLX)**组合(利用他们的特性)实现延迟队列的效果.
二、SpringBoot+RabbitMQ实现延迟队列
在pom中导入以下依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
在生产者工程中,创建一个配置类,声明交换机与队列的绑定关系
import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class TTLDLXConfig {
//死信交换机的名称;
public static final String DLX_EXCHANGE_NAME = "dlx_boot_exchange";
//死信队列名称;
public static final String DLX_QUEUE_NAME = "dlx_boot_queue";
//普通交换机的名称;
public static final String TEST_EXCHANGE_NAME