Springboot集成RabbitMQ的延时队列
一、延时队列
延时队列的使用场景:1.未按时支付的订单,30分钟过期之后取消订单;2.给活跃度比较低的用户间隔N天之后推送消息,提高活跃度;3.过1分钟给新注册会员的用户,发送注册邮件等。
实现延时队列的方式有两种:
通过消息过期后进入死信交换器,再由交换器转发到延迟消费队列,实现延迟功能;
使用rabbitmq-delayed-message-exchange插件实现延迟功能;
注意: 延迟插件rabbitmq-delayed-message-exchange是在RabbitMQ 3.5.7及以上的版本才支持的,依赖Erlang/OPT 18.0及以上运行环境。
由于使用死信交换器相对曲折,本文重点介绍第二种方式,使用rabbitmq-delayed-message-exchange插件完成延迟队列的功能。
二.下载并且安装erlang和RabbitMQ
1.erlang下载地址 :http://www.erlang.org/downloads
2.RabbitMQ下载地址:http://www.rabbitmq.com/download.htm
3.安装教程:https://blog.51cto.com/10836356/2082963
三.代码实现
3.1.新增依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
3.2.修改application.yml
spring:
application:
name: springboot-rabbitmq-sender
rabbitmq:
host: 127.0.0.1
username: guest
password: guest
3.3.配置队列
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
i