一 .作用
(1)解耦:在项目启动之初是很难预测未来会遇到什么困难,消息中间件在处理过程中插入了一个隐含的,基于数据的接口层,两边都实现这个接口,这样就允许独立的修改或者扩展两边的处理过程,只要两边遵守相同的接口约束即可。
(2)冗余(存储):在某些情况下处理数据的过程中会失败,消息中间件允许把数据持久化
(3)扩展性:消息中间件解耦了应用的过程,所以提供消息入队和处理的效率是很容易的,只需要增加处理流程就可以了。
(4)削峰:在访问量剧增的情况下,但是应用仍然需要发挥作用,但是这样的突发流量并不常见。而使用消息中间件采用队列的形式可以减少突发访问压力,不会因为突发的超时负荷要求而崩溃
(5)可恢复性:当系统一部分组件失效时,不会影响到整个系统。消息中间件降低了进程间的耦合性,当一个处理消息的进程挂掉后,加入消息中间件的消息仍然可以在系统恢复后重新处理
(6)顺序保证:在大多数场景下,处理数据的顺序也很重要,大部分消息中间件支持一定的顺序性
(7)缓冲:消息中间件通过一个缓冲层来帮助任务最高效率的执行
(8)异步通信:通过把消息发送给消息中间件,消息中间件并不立即处理它,后续在慢慢处理。
(9) AMQP:高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计
二 .执行过程
(1) .客户端连接到消息队列服务器,打开一个Channel。
(2) .客户端声明一个Exchange,并设置相关属性。
(3) .客户端声明一个Queue,并设置相关属性。
(4) .客户端使用Routing key,在Exchange和Queue之间建立好绑定关系。
(5) .客户端投递消息到Exchange
三 .队列模式
1.简单队列
2.Work模式
说明 : channel.basicQos(1); 同一时刻服务器只会发送一条记录给消费者,体现work模式下的能者多劳
3.订阅模式
说明 :一个生产者多个消费者;每个消费者都有自己的队列; 生产者将消息发送到交换机;每个队列都要绑定到交换机;生产者发送的消息经过交换机达到队列,实现一个消息被多个消费者获取;
4.路由模式
说明 :交换机模式为direct时生效;将队列绑定到交换机上同时赋予route_key; 将消息推送到交换机时 指定消息key;当route_key和消息key相同时,消息就会推送到指定队列
5.主题模式:将路由键和某模式进行匹配
四 .sprigboot整合rabbitMQ
1. 在pom中导入meven依赖
2.在配置文件中添加rabbitMQ的配置信息
3.编写rabbitMQConfig类
4.定义消费者