上云无忧 > 文档中心 > 百度智能云消息队列 for RabbitMQ 中AMQP、生产者、消费者Exchange(交换机)等核心概念详解
消息队列 for RabbitMQ
百度智能云消息队列 for RabbitMQ 中AMQP、生产者、消费者Exchange(交换机)等核心概念详解

文档简介:
本文主要对消息服务RabbitMQ涉及的专有名词和术语进行定义和解释,方便您更好地理解相关概念并使用该产品。 生产者(Producer): 发送消息的应用,消息数据的来源。 消费者(Consumer): 接收消息的应用,消息数据的去处。 Exchange(交换机): 用于决定消息与队列之间投递关系的机制,本质上为消息路由。路由的基础是Routing Key(路由键)和Binding Key(绑定键)。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

本文主要对消息服务RabbitMQ涉及的专有名词和术语进行定义和解释,方便您更好地理解相关概念并使用该产品。

RabbitMQ

RabbitMQ是一款用Erlang语言实现,完全支持AMQP协议的开源分布式消息队列系统,具备强大的分布式、可扩展和高可用能力。RabbitMQ在TCP协议层面提供了丰富的多语言SDK,便于用户使用。

AMQP(高级消息队列协议)

AMQP(Advanced Message Queue Protocol)是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,不受客户端/中间件不同产品,不同的开发语言等条件的限制。

消息(Message)

消息队列服务对外服务的基本实体单元,消息由Header(标签)和Body(消息体)组成。Header是消息生产者添加的各种属性的集合,包括消息是否被持久化,由哪个队列接受,优先级是多少等等。Body是消息体,是真正需要被传输的数据。

队列(Queue)

消息的容器,存储被生产者投递过来但尚未被消费的消息。生产者把消息发送到队列,消费者从队列中获取并消费消息。每个消息会被投放到一个或多个队列里。

生产者(Producer)

发送消息的应用,消息数据的来源。

消费者(Consumer)

接收消息的应用,消息数据的去处。

Exchange(交换机)

用于决定消息与队列之间投递关系的机制,本质上为消息路由。路由的基础是Routing Key(路由键)和Binding Key(绑定键)。生产者投递消息时,在Header中指定消息的Routing Key。每个队列被指定一个或多个Key(通配符),并将这些Key与Exchange绑定,称为Binding Key。Exchange通过Routing Key与Binding Key的匹配规则来决定消息应该投递给哪个/哪些队列。具体而言,Exchange支持如下几种类型:

  • Fanout(扇出):忽略Routing Key(认为匹配所有的Binding Key),将消息传递给Exchange所绑定的所有队列。
  • Direct(直接/点对点):精确匹配Routing Key与Binding Key,只将消息投递给能够匹配的队列。
  • Topic(主题/分发-订阅):模糊匹配Routing Key与Binding Key,其中“#”通配任意0个或多个单词,“*”通配任意1个单词。
  • Headers:该类型的Exchange不依赖于Routing Key与Binding Key的匹配规则来路由消息,而是根据发送的消息内容中的Headers属性进行匹配。
  • RPC:MQ本身是基于异步的消息处理,生产者将消息投递到消息代理之后不关心也不会知道消费者后续处理成功或者失败。但在一些应用场景中,很可能需要同步处理机制,生产者需要同步等待服务端将消息处理完成后再进行下一步处理。

Broker Server(代理服务器)

消息代理的服务端程序。Exchange机制、队列都位于其中。从生产者客户端连接中接受消息,存储消息,将消息路由到相应的队列,并将队列中的消息发送给消费者客户端。

Vhost(虚拟主机)

不同的用户通过使用不通的虚拟主机,能够做到权限的隔离。在虚拟主机内,用户可以创建Exchange,Queue等。

Connection(连接)

代理服务器与客户端之间建立的TCP连接,代理服务器保证不会主动关闭连接,除非出现网络错误或者服务出现问题。

Channel(通道)

Connection的逻辑概念,只有通过Channel才能执行AMQP命令。业务程序通过Channel与Broker Server交互,Channel之间互不影响。建议客户端线程之间不公用Channel,或者至少要保证多个线程在一个Channel上发送消息的行为是串行的。

Command(命令)

AMQP的命令。客户端通过Command执行与AMQP服务器的交互。例如在RabbitMQ中,客户端可以通过publish命令发送消息,通过txSelect开启一个事务,通过txCommit提交一个事务。

优先级队列

RabbitMQ支持按照消息优先级的高低来消费消息的队列。生产者在发送消息时,需要设置该消息的优先级,RabbitMQ按照队列中优先级高低的顺序来执行消费。

死信队列

消息在消费失败、TTL过期、队列长度超限之后会被重新发送到一个特殊的Exchange,即dead letter exchange(DLX),进入到DLX的消息不会被重新发送到原来的队列重新消费。

延时队列

采用延时队列插件(rabbitmq-delayed-message-exchange)来实现延时队列功能(延时队列本身依赖18.0及以上版本的Erlang/OTP)。

相似文档
  • 控制台为用户提供了界面化管理RabbitMQ服务的能力,用户第一次使用百度智能云消息服务 for RabbitMQ产品时,首先需要开通服务。 在开通页面中,点击“开通服务”按钮,即可开通消息服务 for RabbitMQ产品服务。
  • 使用百度智能云消息服务 for RabbitMQ 产品,需要先创建实例。 进入RabbitMQ服务管理控制台点击“创建实例”,进入“创建实例”页面。 当前每个用户可在单个区域创建50个实例,如配额用尽请手动删除。 填写需要创建实例的基本信息,包括实例名称、用户名、密码等。 请在页面下方确认所选配置及价格,点击"下一步"跳转至【确认订单】页面,进行付款。
  • 多用户访问控制,主要用于帮助用户管理云账户下资源的访问权限,适用于企业内的不同角色,可以对不同的工作人员赋予使用产品的不同权限,当您的企业存在多用户协同操作资源时,推荐您使用多用户访问控制。
  • RabbitMQ以实例为单位进行计价,在创建实例时显示实例对应配置的价格,目前支持单机版及集群版,按需计费详情请参考:RabbitMQ价格详情。 实例价格 = ( 实例规格价格 + 磁盘存储价格 )* 时长。
  • 根据您最近3天的账单金额来判断您的账户余额(含可用代金券)是否足够支付未来3天的费用,若不足以支付,系统发送续费提醒。 北京时间整点检查您的账户余额是否足以支付本次RabbitMQ账单的费用(如北京时间11点整检查账户余额是否足以支付10点至11点的账单费用),若不足以支付,即为欠费,欠费时系统会发送欠费通知。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部