MQ:
是两个应用程序或者两个模块之间通信的方式,无需建立连接,通过队列中的消息数据进行程序间通信。
MQ是一种通信方式思想,基于AMQP(advanced message queue Protocol)的一种开源,消息通信中间件----rabbitMq
rabbiteMq的使用场景:
1.针对于并发量十万级、百万级的并发场景很实用,实时性很好,安全而且可靠。
2.好处:rabbitMq是一种异步的处理方式,无需等待消息的响应,可以采用一些对策,等待消息的回应。提高性能。
例如:短信验证:首先将手机号 装入消息队列中,然后给一个倒计时的时间返回给前端,继续等待等待消息平台发送验证码。
rabbitMq有5种消息模型:
1.简单队列模型:
一个消费者,一个生产者,一条消息队列
生产者生产出一条消息数据,存放进队列中,消费者从消息队列中获取数据并进行处理
2.work工作队列
为了解决消息堆积问题,一个消费者,多个生产者一起捕获消息并进行执行
模型:一个生产者 一个消息队列 多个消费者平均分配
但是这样有可能造成性能的浪费,性能好的也会是一样的工作量,造成了性能浪费
设置属性每次都消费一个消息。
每个消息只能被一个消费者捕获消费
3.发布者订阅者模式(使用fanout交换机做到的)
使用fanout广播交换器,将生产者生产的消息发送给每一个消费者,每一个消费者都有自己的消息队列。
4.路由模式(使用direct交换机)
使用DIrect定向交换器,按照路径匹配将消息发送给指定的消费者队列,
按照路径完全匹配的准则,路由交换机将生产者的消息发送给对应的队列
5.主题模式
使用topic交换机,使用通配符#/*来进行路径的匹配,将消息发送给指定的消费者
路径格式:单词.单词.单词 使用"."分割
#:匹配一个或多个单词
*:只匹配一个单词
例如 a.b.c.* 匹配 a.b.c.d 、a.b.c.r
a.b.c.# 匹配 a.b.c.a.c、a.b.c.xyz
消息