二、AMQP基础概念介绍

RabbitMQ 是使用 Erlang 语言基于AMQP协议进行开发的,也可以说 RabbitMQ 是 AMQP 协议的一种实现。学习 RabbitMQ 之前需要对 AMQP 协议进行一些了解。

什么是AMQP

AMQP,即Advanced Message Queuing Protocol,AMQP 被设计成为一种开放标准,以解决众多的消息队列需求和拓扑结构问题。基于此协议的客户端与消息中间件可传递消息,并不受不同客户端产品和不同中间件产品的影响,也不受不同的开发语言条件的限制。

AMQP名词解释

Vhost

虚拟主机(Virtual Host),每一个 Vhost 本质上是一个 mini 版的消息队列服务器,它拥有自己的队列、交换器、绑定等,更重要的是它拥有自己的权限机制,Vhost 相当于物理机上的虚拟机。它们各个实例间是逻辑分离的。

队列 Queue

用来存储消息的数据结构,位于硬盘或内存中。每个消息都会被投入到一个或多个队列里。

生产者 Producer

消息生产者,即投递消息的程序。

消费者 Consumer

消息消费者,即接收消息的程序。

连接 Connection

TCP 连接,生产者或消费者与消息队列服务间的物理 TCP 连接。

交换器 Exchange

消息代理服务器中用于把消息路由到队列的组件。生产者将消息发送到交换器,由交换器将消息路由到一个或多个队列中(或者丢弃),交换器按照相应的绑定逻辑将消息路由到队列中。

绑定 Binding 或 绑定键 Binding Key

用于告诉交换器消息应该被存储到哪个队列。它的作用是把交换器和队列按照路由规则绑定起来,换句话说,绑定键是绑定队列到交换器的粘合剂。

路由键 Routing Key

路由键可以是队列名称,也可以是一串用于描述消息、具有特定语法的字符串。当交换器对一条消息进行评估以决定路由到哪些合适的队列时,消息的路由键会和绑定键进行比对。

信道 Channel

在客户端的每个物理 TCP 连接里,可建立多个信道,每个信道代表一个会话任务。就像一条光缆有许多光纤束一样。

为什么引入信道的概念

生产者要发布消息,消费者要消费消息都要跟先和消息中间件建立起连接——TCP 连接,信道是建立在 TCP 连接内的虚拟连接。AMQP 命令都是通过信道发送的,每条信道都会被指派一个唯一的 ID。
使用信道而不是 TCP 连接发送 AMQP 命令的原因在于,操作系统建立和销毁 TCP 会话的开销是大的。假设应用程序从队列消费消息,并根据服务需求合理调度线程,如果只进行 TCP 连接,那么每个线程都需要自行连接到消息中间件,在应用高峰期会有每秒成百上千条 TCP 连接,这会造成 TCP 连接的巨大浪费,何况操作系统每秒也就只能建立这点数量的连接,因此很容易就碰到瓶颈了。如果所有线程只是用一条 TCP 连接就能满足性能方面的要求,并且又能确保每条线程的私密性,就像拥有独立的连接一样,就很完美了是不是。
线程启动后,会在现有连接上创建一条信道,也就获得了连接到消息中间件的私密通道路径,而不会给操作系统的 TCP 栈造成额外的负担,因此即使每秒成百上千的创建信道也不会影响操作系统。在一条 TCP 连接上创建多少条信道是没有限制的。


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

推荐阅读更多精彩内容

  • http://liuxing.info/2017/06/30/Spring%20AMQP%E4%B8%AD%E6%...
    sherlock_6981阅读 15,899评论 2 11
  • 这个指导提供一个AMQP 0-9-1协议的概述,它是RabbitMq支持的一个协议。 什么是AMQP 0-9-1?...
    浪_6e80阅读 714评论 0 1
  • 概述 RabbitMQ是目前非常热门的一款消息中间件,不管是互联网行业还是传统行业都在大量地使用 。 Rabbit...
    Tian_Peng阅读 1,670评论 1 4
  • 1. 生产者 用于创建消息,并发布到Rabbit服务器 2. 消息 包含两部分,有效载荷(payload)和标签...
    LeeSpringFly阅读 230评论 0 0
  • 标准文件有哪些 当我们运行一个可执行程序的时候就已经打开了三个文件 标准输入文件 stdin 标准输出文件 std...
    junson阅读 327评论 0 0