RabbitMQ学习入门

1.背景
RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现。

2.市面上常见的消息队列

  1 ActiveMQ         较古老,现在用的人很少
  2 ZeroMQU
  3 Pulsar
  4 RabbitMQ         推荐使用这个 
  5 MSMQ             微软出品,较笨重
  6 RocketMQ        阿里出品、 开源的、 中国的 主要是java的
  7 Kafka                java语言编写,这个也牛逼
  8 Redis-List         这个也推荐
  9. NetMQ .NET   轻量级消息队列 很轻
  10.Mqtt               微消息队列,该协议主要应用到物联网上

扩展:市面上常用的Nosql:redis、mongodb、 es、 hbase 

本篇着重套路RabbitMQ

3.RabbitMQ使用过程

生产者连接到rabbit代理服务,创建一条AMQP信道(channel),然后把生成的消息,通过信道(channel)发布到交换器(exchange)上,交换器根据路由规则(路由key)进行绑定到或者路由到队列上面。最后消息到达队列上中。
消费者跟生产者一样需要先和rabbit代理服务器创建连接,同时创建一个消息管道,并订阅到队列上,进而从队列中获取消息,进行处理。

 

4.RabbitMQ中几个重要的概念

消息:                  生产者创建消息,这里的消息是指?消息包含两个部分内容:有效载荷(payload)、标签(label).

信道 channel:     任何传输和创建队列、创建路由、绑定路由和队列都是通过信道来的

交换器 exchange:生产者写入消息,先经过交互器转发,再写入队列的。不是生产者直接写入队列的 (也可以抽象理解为wifi路由器)
                              (此路是我开,此树是我栽树,要想从此过,留下买路财)
                              消息发送到交换器,会根据确定的规则,RabbitMQ将会决定消息该投递到哪个队列。如果需要写入不同的策略,只需要修改交换机的转发routingKey即可

 

 5.RabbitMQ中4种重要的交换机exchange策略,每种类型实现了不同的路由算法,前三个比较常用

direct: 直接交换器,工作方式类似于单播,Exchange会将消息发送完全匹配routingKey的Queue (一条消息可以绑定多个routingKey,一条消息也可以转发到多个队列里面去)
fanout:fanout类型的Exchange路由规则非常简单,它会把所有发送到该Exchange的消息路由到所有与它绑定的Queue中,不存在routingKey。(所有队列都会收到这条消息,场景:发布订阅的广播功能/也是一种典型的观察者模式)
topic: Exchange绑定队列需要制定Key; Key 可以有自己的规则;Key可以有占位符;*/#*匹配一个单词、#匹配多个单词,在Direct基础上加上模糊匹配。
headers:

 

6.RabbitMQ的使用模式 

1.生产者消费模式 (单生产者单消费者)
2.多生产者多消费者模式
3.互为生产消费者--消费者
4.发布订阅模式(就是一个推和拉的意思)

posted @ 2020-09-20 21:42  微笑的_鱼  阅读(194)  评论(0)    收藏  举报