SpringBoot + RabbitMQ实现延时队列详细步骤
延迟队列的使用场景:
1.未按时支付的订单,30分钟过期之后取消订单;
2.给活跃度比较低的用户间隔N天之后推送消息,提高活跃度;
3.过1分钟给新注册会员的用户,发送注册邮件等。
1.Rabbitmq是什么
MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
2.rabbitmq的使用过程
rabbitmq的使用过程大概如下:
- 客户端连接到消息队列服务器,打开一个channel。
- 客户端声明一个exchange,并设置相关属性,相关属性包括exchange的
- 名字,exchange是否可以被持久化(持久化到磁盘),exchange是否自动删除
- 客户端声明一个queue,并设置相关属性,相关属性包括queue的名字,
- queue是否可以被持久化(持久化到磁盘),queue是否自动删除
- 声明exchange和queue之间的binding关系,用唯一的key来进行绑定
- 客户端投递消息到exchange。
- 不同类型的exchange根据路由规则将消息分发到不同的queue中
- 客户端监听到queue中的内容,将消息取出消费,发送ack到rabbitmq中,删除该条消息
2.安装rabbitmq
首先要安装rabbitmq和erlang插件 详细安装步骤如下:
网址: https://blog.csdn.net/m0_37034294/article/details/82839494
注意:安装url千万不要用中文命名
3.SpringBoot整合RabbitMQ
pom.xml 文件 添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>