RabbitMQ以及整合SpringBoot2.x实战教程
一、mq介绍,不同mq的特点
1.1 什么是mq
1.2 不同mq的特点
二、RabbitMQ 的引言
2.1 RabbitMQ
基于AMQP协议,erlang语言开发,是部署最广泛的消息中间件,最受欢迎的消息中间件之一。
2.2 RabbitMQ 的安装
进入官网,点击get start
我们选择centos的版本进行下载
选择版本进行下载
下载完总共这三个文件
下面开始安装
实操
编辑配置文件
三、RabbitMQ的管理命令行和管理界面初识
3.1 web管理界面介绍
四.RabbitMQ的第一个程序
4.1 AMQP协议的回顾
4.2 RabbitMQ支持的消息模型
4.3 新建项目
4.4 引入依赖
<!--rabbitMQ依赖 -->
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.7.2</version>
</dependency>
4.5 新建虚拟主机,账户,并且分配账户虚拟主机权限
点击上图的用户名ems,给用户分配虚拟主机的访问权限
4.6 开发生产者
4.6.1 第一种模型(直连)
4.6.2测试类
- 生产者测试类
运行测试代码,之后在管理页面查看
- 消费者测试类
4.6.3 RabbitMQ连接工具类封装
4.6.2 第二种模型(worker quene)
生产者测试类
消费者测试类
消费者-1
消费者-2
测试结果
- 问题: 如果两个消费者,一个消费得慢,另外一个消费的快,这种情况也是遵循平均分配,下面就来实现能者多劳的模式,先完成的消费者多消费,而慢的消费者则少消费~!
rabbitMQ的消息确认机制:比如生产者生产了10条消息,这时有两个消费者,消费者消费的同时,会把十条消息一次性平均分配给两个消费者,并且把这十条消息从队列里删除,也就是每个消费者一次性得到五条消息,队列里消息被全部消费,那么就有一个问题!!!我们不能保证消费者都能把这个五条消息正确的全部执行完成,所有我们优化以上的消费者代码
4.6.3 第三种模型(fanout) 扇出,也称为广播
生产者测试类
消费者测试类 (建立多个测试,代码一样)
4.6.4 第四种模型 Routing(路由)之订阅模型-Direct(直连)
开发生产者
开发消费者1,只接受error路由的消息
开发消费者2,接受info,warning,error路由的消息
4.6.5 第四种模型 Routing(路由)之订阅模型-Tppic(动态路由)
生产者测试类
消费者1测试类
消费者2测试类
五、springboot整合rabbitMQ
5.1 搭建初始环境
1.创建一个springboot项目,引入依赖
2.编写配置
3.编写代码
3.1 第一种模型
3.1.1 生产者
3.1.2 消费者
3.2 第二种模型 worker模型
3.2.1 开发生产者
3.2.2 开发消费者
3.3 第三种模型 发布订阅模型 fanout 广播
3.3.1 创建生产者
3.3.2 创建消费者
3.4 第四种模型 路由模型 Routing
3.4.1 开发生产者
3.4.2 开发消费者
3.5 第五种模型 动态路由模型 topics 订阅模式
3.5.1 开发生产者
3.5.2 开发消费者
六、 应用场景
6.1异步处理
6.2 应用解耦
6.3 流量削峰
七.RabbitMQ的集群
7.1 集群架构
7.1.1 普通集群(副本集群)
1.架构图
很少使用,这是镜像集群的基础
副本模式:只同步交换机,不同步队列,队列还是存放在master主节点里
2.集群搭建
2.1 准备三台虚拟机,并安装rabbitMQ并配置好
2.2 保证三台机器上 .erlang.cookie 是一样的,如果不是一样的,就复制任意一台虚拟主机的到另外两台主机
2.3 修改之前先关闭三台虚拟主机的rabbitMQ
2.4 根据下方命令把一台主机的 .erlang.cookie复制到另外两台虚拟机
2.5 启动rabbitMQ(这是后台启动,没有加载插件,所有看不到web 界面)
2.5 关闭两个想作为从节点的两个rabbitMQ服务
2.6 给两台从机执行 加入集群的命令
2.7 命令执行完之后执行启动从机命令
2.8 查看集群状态
** 全部过程**