RabbitMQ:RabbitMQ架构和工作流程
RabbitMQ,俗称“兔子MQ”(可见其轻巧,敏捷),是目前非常热门的一款开源消息中间件,不管 是互联网行业还是传统行业都广泛使用(最早是为了解决电信行业系统之间的可靠通信而设计)。
一、介绍
RabbitMQ,俗称“兔子MQ”(可见其轻巧,敏捷),是目前非常热门的一款开源消息中间件,不管 是互联网行业还是传统行业都广泛使用(最早是为了解决电信行业系统之间的可靠通信而设计)。
1. 高可靠性、易扩展、高可用、功能丰富等
【资料图】
2. 支持大多数(甚至冷门)的编程语言客户端。
3. RabbitMQ遵循AMQP协议,自身采用Erlang(一种由爱立信开发的通用面向并发编程的语 言)编写。
4. RabbitMQ也支持MQTT等其他协议。
RabbitMQ具有很强大的插件扩展能力,官方和社区提供了非常丰富的插件可供选择:
https://www.rabbitmq.com/community-plugins.html
二、整体逻辑架构
1、RabbitMQ Exchange类型
RabbitMQ常用的交换器类型有: fanout 、 direct 、 topic 、 headers 四种。
Fanout
fanout会把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中,如图:
Direct
direct类型的交换器路由规则很简单,它会把消息路由到那些BindingKey和RoutingKey完全匹配的 队列中,如下图:
Topic
topic类型的交换器在direct匹配规则上进行了扩展,也是将消息路由到BindingKey和RoutingKey 相匹配的队列中,这里的匹配规则稍微不同,它约定: BindingKey和RoutingKey一样都是由”.”分隔的字符串;BindingKey中可以存在两种特殊字符“*”和 “#”,用于模糊匹配,其中”*”用于匹配一个单词,”#”用于匹配多个单词(可以是0个)。
Headers
headers类型的交换器不依赖于路由键的匹配规则来路由信息,而是根据发送的消息内容中的 headers属性进行匹配。在绑定队列和交换器时指定一组键值对,当发送的消息到交换器时, RabbitMQ会获取到该消息的headers,对比其中的键值对是否完全匹配队列和交换器绑定时指定的键 值对,如果匹配,消息就会路由到该队列。headers类型的交换器性能很差,不实用。
2、RabbitMQ数据存储
RabbitMQ消息有两种类型: 1. 持久化消息和非持久化消息。 2. 这两种消息都会被写入磁盘。
持久化消息在到达队列时写入磁盘,同时会内存中保存一份备份,当内存吃紧时,消息从内存中清 除。这会提高一定的性能。
非持久化消息一般只存于内存中,当内存压力大时数据刷盘处理,以节省内存空间。
RabbitMQ存储层包含两个部分:队列索引和消息存储。
三、工作流程
1、生产者发送消息的流程
1)生产者连接RabbitMQ,建立TCP连接( Connection),开启信道(Channel)
2)生产者声明一个Exchange(交换器),并设置相关属性,比如交换器类型、是否持久化等
3)生产者声明一个队列井设置相关属性,比如是否排他、是否持久化、是否自动删除等
4)生产者通过 bindingKey (绑定Key)将交换器和队列绑定( binding )起来
5)生产者发送消息至RabbitMQ Broker,其中包含 routingKey (路由键)、交换器等信息
6) 相应的交换器根据接收到的 routingKey 查找相匹配的队列。
7)如果找到,则将从生产者发送过来的消息存入相应的队列中。
8)如果没有找到,则根据生产者配置的属性选择丢弃还是回退给生产者
9)关闭信道。
10)关闭连接。
2、 消费者接收消息的过程
1) 消费者连接到RabbitMQ Broker ,建立一个连接(Connection ) ,开启一个信道(Channel) 。
2)消费者向RabbitMQ Broker 请求消费相应队列中的消息,可能会设置相应的回调函数, 以及 做一些准备工作
3)等待RabbitMQ Broker 回应并投递相应队列中的消息, 消费者接收消息。
4)消费者确认( ack) 接收到的消息。
5)RabbitMQ 从队列中删除相应已经被确认的消息。
6)关闭信道。
7)关闭连接。
关键词:
责任编辑:孙知兵
免责声明:本文仅代表作者个人观点,与太平洋财富网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如有问题,请联系我们!
- RabbitMQ:RabbitMQ架构和工作流程2023-06-05
- 上汽友道智途联手六钢集团打造绿色零碳智慧2023-06-05
- 视讯!男人喜欢女人在床上什么样(男人喜欢2023-06-05
- 全球今日报丨创佳绩 建新功 ||中国一重制2023-06-05
- 当前观点:注意!知名清香白酒龙头管理层大2023-06-05
- 用友网络拟斥资6亿至9亿元回购 用于股权激2023-06-05
- 德国放大招争夺人才:入籍缩短到五年,双重2023-06-05
- 宇通发布睿控E平台 加速布局新能源商用车2023-06-05
- 了解的近义词是什么(了解的近义词是什么)-2023-06-05
- 环球热议:6月5日上海瑞洵天然橡胶主流报价2023-06-05
- 《弈仙牌》牌组推荐 最强牌组分享-天天快播2023-06-05
- 宁德时代今日股价大跌背后:非突发利空,市2023-06-05
- 霍普股份:与控股子公司共同投资设立光储新2023-06-05
- 河南证监局:发布研报业务相关制度不完善 2023-06-05
- 即时:中国驻泰国大使馆关注并呼吁合法权益2023-06-05
- 世界环境日,华润怡宝启动“宝贝重塑”计划2023-06-05
- 【全球播资讯】中经资料:巴基斯坦证券市场2023-06-05
- 星期二新股上市:新莱福 每日看点2023-06-05
- 全国一体化算力算网调度平台正式发布 目前2023-06-05
- 通讯!有投资者获赔近12万 紫晶存储10亿赔2023-06-05
- 【环球财经】欧元区PMI数据下修、投资者信2023-06-05
- 全球观察:港交所将于6月19日推出双柜台模2023-06-05
- 每日观察!大宗交易:横店东磁成交910万元,2023-06-05
- 腿筋疼挂什么科(大腿筋扭了挂什么科)2023-06-05
- 迪阿股份回应股价波动:受二级市场影响因素2023-06-05
- 霍普股份:第三届第十次董事会会议决议,审2023-06-05
- “退市潮”袭来世茂股份2亿元回购保股价,超2023-06-05
- 当前热点-泰禾三年自救仍退市:引战万科无果2023-06-05
- 日企业遥遥领先的HUD市场,国内企业如何赶2023-06-05
- 当前聚焦:三一集团全系智能装备,助力郴州2023-06-05
精彩推荐
- 德国放大招争夺人才:入籍缩短到五年,...
- 每日观察!大宗交易:横店东磁成交910万...
- “退市潮”袭来世茂股份2亿元回购保股价...
- 当前热点-泰禾三年自救仍退市:引战万科...
- 日企业遥遥领先的HUD市场,国内企业如何...
- 当前聚焦:三一集团全系智能装备,助力...
- 国美金融科技公布司徒烱培获委任为公司...
- 焦点消息!亚洲金融6月5日注销479.4万股...
- 全球热头条丨康师傅控股将于7月12日或前...
- 方正证券:予康哲药业强烈推荐评级 国...
- 每日视讯:首创证券:首予滔搏买入评级...
- 新加坡国防部长:日本最大的任务是改善...
- 黄金9999价格今天多少一克(2023年6月5...
- 热讯:智云健康午盘持续升高 股价现涨超8%
- 香港本地股今日普涨 九龙仓集团涨近5%...
阅读排行
-
《弈仙牌》牌组推荐 最强牌组分享-天天快播
上一篇2023-06-05 20:42:38