栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 前沿技术 > 云计算 > 云平台

RabbitMQ入门系列(一)

云平台 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RabbitMQ入门系列(一)

在对RabbitMQ进行实操之前,笔者想将自己所知道的MQ知识进行一下说明。

这里先放上一张RabbitMQ的模型图,希望能够帮助大家更好地理解 

为什么要使用RabbitMQ

这里我们主要考虑如下三个方面:

  • 解耦

A 系统通过接⼝调⽤发送数据到 B、C、D 三个系统。那如果现在 E 系统也要这个数据呢?那如果 C 系统现在不需 要了呢?现在 A 系统⼜要发送第⼆种数据了呢?这样的话 A 系统的维护成本就⾮常的⾼,⽽且 A 系统要时时刻刻 考虑B、C、D、E 四个系统如果出现故障该怎么办?A 系统是᯿发还是先把消息保存起来呢?使⽤消息队列就可以 解决这个问题。A 系统只负责⽣产数据,不需要考虑消息被哪个系统来消费。

  • 异步

        A 系统需要发送个请求给 B 系统处理,由于 B 系统需要查询数据库花费时间较⻓,以⾄于 A 系统要等待 B 系统处 理完毕后再发送下个请求,造成 A 系统资源浪费。使⽤消息队列后,A 系统⽣产完消息后直接丢进消息队列,不⽤ 等待 B 系统的结果,直接继续去⼲⾃⼰的事情了。

  • 削峰

        A 系统调⽤ B 系统处理数据,每天 0 点到 12 点,A 系统⻛平浪静,每秒并发请求数量就 100 个。结果每次⼀到 12 点 ~ 13 点,每秒并发请求数量突然会暴增到 1 万条。但是 B 系统最⼤的处理能⼒就只能是每秒钟处理 1000 个 请求,这样系统很容易就会崩掉。这种情况可以引⼊消息队列,把请求数据先存⼊消息队列中,消费系统再根据⾃ ⼰的消费能⼒拉取消费。

RabbitMQ的重要角色

生产者

        消息的创建者,负责消息的生产。同时可以异步接受broker发来的回调通知

消费者 

        消息的处理接收方,同时需要向队列发送确认消息

代理

        就是 RabbitMQ 本身,⽤于扮演“快递”的⻆⾊,本身不⽣产消息,只是扮演“快递”的⻆⾊

RabbitMQ的重要组件

1. ConnectionFactory(连接管理器):应⽤程序与 rabbit 之间建⽴连接的管理器,程序代码中使⽤;

2. Channel(信道):消息推送使⽤的通道;

3. Exchange(交换器):⽤于接受、分配消息;

4. Queue(队列):⽤于存储⽣产者的消息;

5. RoutingKey(路由键):⽤于把⽣成者的数据分配到交换器上;

6. BindingKey(绑定键):⽤于把交换器的消息绑定到队列上。

RabbitMQ的几种广播类型

RabbitMQ 有四种⼴播模式:fanout、direct、topic、header。

补充:交换机(exchange)通过消息的routingKey来选择队列(queue)进行消息的转发

1. fanout:所有 bind 到此 exchange 的 queue 都可以接收消息;很像⼦⽹⼴播,每台⼦⽹内的主机都获得了 ⼀份复制的消息。fanout 交换机转发消息是最快的。

2. direct:通过 routingKey 和 exchange 中的 bindingKey 决定的那个唯⼀的 queue 可以接收消息;

3. topic:所有符合 routingKey 所 bind 的 queue 可以接收消息。更像是fanout和direct的集合。

参考:

微信公众号:帅地玩编程

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/898792.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号