初识 RabbitMQ

rabbitMQ 是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间的共享数据,即跨平台。它是使用 Erlang 语言来编写的,并且 rabbitMQ 是基于 AMQP 协议的,在 Java,PHP 等等技术栈里面都能使用。

特点:

rabbitMQ 在滴滴,美团,头条艺龙等大厂中广泛应用,这是因为它具有如下的特点:

开源,性能优秀,稳定性保障;

提供可靠性消息投递模式 (confirm),返回模式 (return);

与 SpringAMQP 完美的结合,API丰富;

集群模式丰富,表达式配置,HA模式,镜像队列模型(常用);

保证数据不丢失的前提做到高可靠性,可用性。

rabbitMQ 高性能原因: 采用 erlang 语言开发

erlang 语言最初在于交换机领域的架构模式,这样使得 rabbitMQ 在 broker 之间进行数据交互的性能是非常优秀的。

erlang 的优点:有着和原生 socket 一样的延迟。

AMQP 协议: advanced message queuing Protocol,即 高级消息队列协议。
AMQP 的定义:是具有现代特征的二进制协议,是一个提供统一消息服务的应用层标准高级消息队列协议,是具有应用层协议的一个开放标准,为面向消息的中间件设计

如下面的 AMQP 协议模型图示,生产者 publisher 将消息放到服务器 server 上,再到虚拟主机 virtual host ,才到 exchange 上,然后 exchange 根据路由键把当前消息投递到对应的 queue 当中,消费者监听指定的 queue 即可获得消息。

image

AMQP 核心概念:

server: 又称 broker,也就是服务端,接受客户端的连接,实现 AMQP 实体服务

Connection: 连接,应用程序与 broker 的网络连接

channel: 网络信道,几乎所有的操作都在 channel 中进行,channel 是进行消息读写的通道。客户端可建立多个 channel,每个 channel 代表一个回话任务。

message: 消息,服务器和应用程序之间传送的数据,由 properties 和 body 组成。

properties  可以对消息进行修饰,比如消息的优先级/延迟等高级特性;

body 就是消息体内容。

virtual host: 虚拟地址,用于进行逻辑隔离,是最上层的消息路由,是一个逻辑概念, 最上层的消息路由,类似 redis 分 16 个逻辑数据库。一个 virtual host 里面可以有若干个 exchange 和 queue,同一个 virtual host 里面不能有相同名称的 exchange 或 queue。

exchange: 交换机,接收消息,根据路由键 routingKey 转发消息到绑定的队列。

生产者直接把消息放到 exchange 里面,exchange 根据路由键转发消息到绑定的队列里面, exchange 和队列有一个绑定的关系

binding: exchange 和 queue 之间的虚拟连接,binding 中可以包含r outing key

routing key: 一个路由规则,虚拟机可用它来确定如何路由一个特定消息。

queue: 也成为 massage queue,消息队列,保存消息并将它们转发给消费者。

rabbitMQ 的整体架构

rabbitMQ 的整体架构如下图所示,最大的特点就是生产者不需要关心消息投递到哪个队列,消费者也不需要关心这个消息是从哪个 exchange 来的


image

rabbitMQ 消息的流转如下图所示,生产者生产并投递消息到 exchange 里面,exchange 可以绑定多个队列,exchange 根据路由策略路由键把消息放到对应的一个队列当中。发消息时有两个关注点,第一是指定放到哪个 exchange 上,第二是在发送消息时设置路由键,消费者订阅消费消息即可。


image
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,490评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,581评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,830评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,957评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,974评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,754评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,464评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,847评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,995评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,137评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,819评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,482评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,023评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,149评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,409评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,086评论 2 355

推荐阅读更多精彩内容