1 RabbitMQ简介
一.消息队列中间件简介
- 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题实现高性能,高可用,可伸缩和最终一致性[架构] 使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ
- 以下介绍消息队列在实际应用中常用的使用场景:异步处理,应用解耦,流量削锋和消息通讯四个场景
二.架构图与主要概念
- 架构图
2 走进RabbitMQ
一.RabbitMQ安装与启动
- windows环境下的安装
- 下载并安装 Eralng
otp_win64_20.2.exe (以管理员身份运行安装) - 下载并安装rabbitmq
配套软件中已提供rabbitmq-server-3.7.4.exe。双击安装,注意不要安装在包含中文和空格的目录下!安装后window服务中就存在rabbitMQ了,并且是启动状态。 - 安装管理界面(插件)
进入rabbitMQ安装目录的sbin目录,输入命令 - 重新启动服务
- 打开浏览器,地址栏输入http://127.0.0.1:15672 ,即可看到管理界面的登陆页
输入用户名和密码,都为guest 进入主界面
- 下载并安装 Eralng
- docker环境下的安装
- 下载镜像:
- 创建容器,rabbitmq需要有映射以下端口: 5671 5672 4369 15671 15672 25672
15672 (if management plugin is enabled)
15671 management监听端口
5672, 5671 (AMQP 0-9-1 without and with TLS)
4369 (epmd) epmd 代表 Erlang 端口映射守护进程
25672 (Erlang distribution)
- 下载镜像:
3 用户微服务-用户注册
一.需求分析
- 注册账号,用手机号注册,填写后发送短信验证码,填写短信验证码正确方可注册成功。
二.代码生成
- 代码生成器生成用户微服务代码 tensquare_user
- 拷贝到当前工程,并在父工程引入。
- 修改Application类名称为UserApplication
- 修改application.yml 中的端口为9008 ,url 为
- 进行浏览器测试
三.发送短信验证码
- 实现思路: 在用户微服务编写API ,生成手机验证码,存入Redis并发送到RabbitMQ
- 准备工作
- 因为要用到缓存和消息队列,所以在用户微服务(tensquare_user)引入依赖redis和amqp的起步依赖。
- 修改application.yml ,在spring 节点下添加配置
- 因为要用到缓存和消息队列,所以在用户微服务(tensquare_user)引入依赖redis和amqp的起步依赖。
- 代码实现
- 在UserService中新增方法,用于发送短信验证码
- UserController新增方法
- 启动微服务,在rabbitMQ中创建名为sms的队列,测试API
- 在UserService中新增方法,用于发送短信验证码
四.用户注册
- UserService增加方法
- UserController增加方法
4 短信微服务
一.需求分析
- 开发短信发送微服务,从rabbitMQ中提取消息,调用阿里大于短信接口实现短信发送 。
二.提取队列中的消息
- 工程搭建
- 创建工程模块:tensquare_sms,pom.xml引入依赖
- 创建application.yml
- com.tensquare.sms 包下创建启动类
- 创建工程模块:tensquare_sms,pom.xml引入依赖
- 消息监听类
- 创建短信监听类,获取手机号和验证码
- 创建短信监听类,获取手机号和验证码
三.发送短信(阿里云通信)
- 创建工程模块tensquare_sms,pom.xml引入依赖
- 修改application.yml ,增加配置
- 创建短信工具类SmsUtil
- 修改消息监听类,完成短信发送