MQ是什么 RabbitMQ

1、rabbitMQ是什么:

  RabbitMQ,遵循AMQP协议,由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上。web

  学过websocket的来理解rabbitMQ应该是很是简单的了,websocket是基于服务器和页面之间的通讯协议,一次握手,屡次通讯。 而rabbitMQ就像是服务器之间的socket,一个服务器连上MQ监听,而另外一个服务器只要经过MQ发送消息就能被监听服务器所接收。服务器

  可是MQ和socket仍是有区别的,socket至关因而页面直接监听服务器。而MQ就是服务器之间的中转站,例如邮箱,一我的投递信件给邮箱,另外一我的去邮箱取,他们中间没有直接的关系,因此耦合度相比socket小了不少。websocket

  

上图是最简单的MQ关系,生产者-MQ队列-消费者网络

 

 2、MQ使用场景:

  别啥固定式使用场景了,说的透彻一点,他就是服务器之间通讯的,前面博文中提到的Httpclient也能够作到,可是这个相对于其余通讯在中间作了一个中间仓库。并发

  好处1:下降了两台服务器之间的耦合,哪怕是一台服务器挂了,另一台服务器也不会报错或者休克,反正他监听的是MQ,只要服务器恢复再从新连上MQ发送消息,监听服务器就能再次接收。socket

  好处2:MQ做为一个仓库,自己就提供了很是强大的功能,例如再也不是简单的一对一功能,还能一对多,多对一,本身脑补保险箱场景,只要有特定的密码,谁都能存,谁都能取。也就是说能实现群发消息和以此衍生的功能。   高并发

  好处3:如今广泛化的持久化功能,当MQ挂掉能够存储在磁盘等下重启恢复。(须要设置)blog

 

 

   

3、专业术语介绍:

1. 生产者: 在现实生活中就比如制造商品的工厂,他们是商品的生产者。生产者只意味着发送。发送消息的程序称之为一个生产者。

2. 队列:rabbitMQ就像一个仓库,一个仓库里面能够 有不少队列,每一个队列才是服务器之间消息通讯的载体。

3.消费者:消费者就比如是从商店购买或从仓库取走商品的人,消费的意思就是接收。消费者是一个程序,主要是等待接收消息。

4.交换器:在生产者和消息队列之间的交换器,功能相似于网络宽带的交换机,能够根据不一样的关键字,将信息发送到不一样的队列。

上图的E就是交换器,经过关键字绑定,若是生产者给的消息中指定类型是ERROR,就给队列1,若是是INFO或者WARN就给队列2。固然也能够一个关键字绑定两个队列。(INFO等字段本身能够定义,也能够用*,#来匹配。*(星号)表示一个单词#(井号)表示零个或者多个单词。 好比ok.yes能够被ok.*匹配到)队列

5.临时队列:根据需求临时建立的一条队列,在断开链接后自动删除。

 

 4、流程介绍:

  生产者发送一条消息给交换机——交换机根据关键字匹配到对应的队列——将消息存入队列——消费者从队列中取出消息使用。开发

 

 5、一些细节说明

       MQ不能进行批量的消息处理,你看到的传输再多也只是消息被一条一条的存入队列,消费者从队列中一条一条的取出。这kafKa有区别,因此在效率上比不上kafKa,可是MQ主打的是稳定。

  每次消费者取出消息时会通知队列,我拿到了,当队列接收到这条消息,就会把消息删除,这是默认的ACK机制。若是在接收消息以后,消费者挂掉,或者任何状况没有返回ack,队列中这条消息将不会删除,能够一直存着,等待其余消费者来取。    注意,可是若是设置不返回ack,在不断的发送消息到队列又不删除,会致使MQ仓库boom~~~~

相关文章
相关标签/搜索