千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:重庆千锋IT培训  >  技术干货  >  消息队列之延迟队列入门教程

消息队列之延迟队列入门教程

来源:千锋教育
发布人:lxl
时间: 2023-03-27 11:43:00

  一. 延迟队列的应用场景

  具体应用

  关于消息队列我们已经很熟悉了,我们知道在消息队列中可以实现延迟队列效果,那你知道延迟队列有哪些使用场景吗?这里我给大家总结了延迟队列的几个经典使用场景,看看你的项目中是否涉及到了。

  1. 淘宝七天自动确认收货。在我们签收商品后,物流系统会在七天后延时发送一个消息给支付系统,通知支付系统将货款打给商家,这个过程持续七天,就是使用了消息中间件的延迟推送功能;

  2. 订单在十分钟之内未支付则自动取消;

  3. 新创建的店铺,如果在十天内都没有上传过商品,则自动发送消息提醒;

  4. 用户注册成功后,如果三天内没有登陆则进行短信提醒;

  5. 用户发起退款,如果三天内没有得到处理则通知相关运营人员;

  6. 预定会议后,需要在预定的时间点前十分钟通知各个与会人员参加会议。

  延迟队列简介

  RabbitMQ 3.6.x 之前,我们一般采用死信队列+TTL过期时间来实现延迟队列,通过TTL+死信队列完成。

  从RabbitMQ 3.6.x 开始,RabbitMQ 官方直接提供了延迟队列插件,可以下载放置到 RabbitMQ 根目录下的 plugins 下,这样就可以很轻松的实现延迟队列效果了。

  那么延迟队列到底该怎么使用呢?今天我就通过一个小案例来带大家实现一下。

  二. 本次需求

  以下是我们今天要实现的基本需求。

  用户注册成功后,如果三天内没有登陆则进行短信提醒。

  你现在有没有什么实现思路呢?别急,请跟着我一点点往下看吧。

  三. 安装配置RabbitMQ

  我们采用Docker来安装配置RabbitMQ及其插件,如果你对Docker还不了解,可以参考如下视频教程:

  Docker快速入门教程

  Docker 安装 RabbitMQ

  1.1 查找RabbitMQ镜像

  docker search rabbitmq

  1.2 拉取RabbitMQ镜像

  docker pull rabbitmq (镜像未配有控制台)

  docker pull rabbitmq:management (镜像配有控制台)

  注意:

  rabbitmq是官方镜像,该镜像不带控制台。如果要安装带控制台的镜像,需要在拉取镜像时附带

  tag标签,例如:management。

  tag标签可以通过https://hub.docker.com//rabbitmq?tab=tags来查询。

  1.3 启动RabbitMQ

  docker run -d --name rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 rabbitmq:management

  创建容器并运行(15672是管理界面的端口,5672是服务的端口。

  这里顺便将管理系统的用户名和密码设置为admin admin

  -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin

  1.4 停止RabbitMQ

  docker stop rabbitmq

  1.5 重启 RabbitMQ 容器

  docker restart rabbitmq

  1.6 查看 RabbitMQ 容器进程信息

  docker top rabbitmq

  安装延迟队列插件

  2.1 下载与RabbitMQ相匹配的插件版本

  https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/

  https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/tag/v3.8.0

  2.2 上传插件到服务器的/root文件夹下,然后进行如下操作

消息队列之延迟队列入门教程

  四. 实现延迟消息

  基本需求

  用户注册成功后,如果三天内没有登陆则进行短信提醒。本需求基本架构如下图所示:

消息队列之延迟队列入门教程

消息队列之延迟队列入门教程

  生产者Provider

  Provider部分代码如下所示:

消息队列之延迟队列入门教程

消息队列之延迟队列入门教程

  交换机配置

  交换机代码如下所示:

消息队列之延迟队列入门教程

消息队列之延迟队列入门教程

消息队列之延迟队列入门教程

  消费者Consumer

  消费者部分的代码如下所示:

消息队列之延迟队列入门教程

  这样我们通过以上配置和代码,就可以实现这个基本需求了。


声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

java的输入语句—— Scanner类

2023-05-04

java数据库操作常识事务的四大特性

2023-05-04

DML数据操作之增加或删除数据

2023-05-04

最新文章NEW

socket是什么?有什么作用?

2023-05-04

Java常量定义是什么

2023-04-28

一分钟带你学多线程

2023-04-28

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>