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.发布订阅模式(就是一个推和拉的意思)

浙公网安备 33010602011771号