教程说明
- 本系列教程目录大纲:《RabbitMQ系列教程-目录大纲》
- 本系列教程配套代码:https://gitee.com/lvshuichangliu/rabbitmt.git(码云地址)
第二章 RabbitMQ简介
RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。AMQP :Advanced Message Queue Potocal,高级消息队列协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言等条件的限制。RabbitMQ最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
2.1 RabbitMQ架构
RabbitMQ内部架构图:
Producer
(生产者): 消息的生产者,数据的发送方。消息生产者连接RabbitMQ服务器然后将消息投递到Exchange。
Broker
(服务器):即RabbitMQ Server,也叫Broker server,接收和分发消息的应用,保证数据能够按照指定的方式进行传输。
Connection
(连接):Producer/Consumer 和 broker 之间的 TCP 连接,在消息发送时必须要先建立与RabbitMQ服务器的连接(Connection)
Channel
(信道):建立在Connection中,消息是基于Channel传递的,Channel之间是完全隔离的。Channel 作为轻量级的 Connection 极大减少了操作系统建立 TCP connection 的开销;如果每一次访问RabbitMQ 都建立一个 Connection,在消息量大的时候建立 TCP Connection的开销将是巨大的,效率也较低。
VirtualHost
(虚拟主机):exchange/queue是属于某个VirtualHost的,VirtualHost属于某个用户的;VirtualHost可以分配用户在创建交换机或队列时可以指定其属于哪个虚拟主机,方便用户管理交换机和队列,
Exchange
(交换机):生产者将消息发送到 Exchange(交换器),由 Exchange将消息路由到一个或多Queue 中(或者丢弃)。Exchange 并不存储消息。RabbitMQ 中的 Exchange 有direct、fanout、topic、headers 四种类型,每种类型对应不同的路由规则。
Queue
(队列):是RabbitMQ的内部对象,用于存储消息。消息消费者就是通过订阅队列来获取消息;RabbitMQ 中的消息都只能存储在Queue中,生产者生产消息并最终投递到Queue 中,消费者可以从 Queue 中获取消息并消费。多个消费者可以订阅同一个Queue,这时 Queue中的消息会被平均分摊给多个消费者进行处理,而不是每个消费者都收到所有的消息并处理。
2.2 RabbitMQ安装
参考:Linux安装RabbitMQ
2.3 创建用户
角色说明:
- Admin:包含Monitoring和Policymaker所拥有的权限,另外可以创建和删除
virtual hosts
、查看、创建和删除users、查看创建和删除permissions、关闭其他用户的connections - Monitoring:包含management所拥有的权限,另外可以列出所有virtual hosts,包括他们不能登录的virtual hosts、查看其他用户的connections和channels
- Policymaker:包含management锁拥有的权限,另外可以查看、创建和删除自己的virtual hosts所属的policies和parameters
- Management:可以使用AMQP做任何的事,另外可以查看自己的virtual hosts中的queues, exchanges 和 bindings,查看和关闭自己的channels 和 connections
- None:不能访问 management plugin
2.3 配置虚拟主机
2.3.1 创建虚拟主机
2.3.2 配置权限
下一篇:《RabbitMQ系列教程-第三章-RabbitMQ快速入门》