“RabbitMQ:核心概念”的版本间差异
跳到导航
跳到搜索
(建立内容为“category:RabbitMQ == 关于 == <syntaxhighlight lang="Java" highlight=""> </syntaxhighlight>”的新页面) |
无编辑摘要 |
||
第3行: | 第3行: | ||
== 关于 == | == 关于 == | ||
: [[File:RabbitMQ:概念示意图.png|600px]] | |||
其中: | |||
* '''Message''': | |||
*: 消息,包含消息头(即附属的配置信息)和消息体(即消息内容)。 | |||
* '''Publisher''': | |||
*: 消息的生产者,是一个向交换器发布消息的客户端应用程序。 | |||
* '''Exchange''': | |||
*: 交换器,用来接收生产者发送的消息并且将这些消息路由给服务器中的队列。 | |||
** 四种Exchange类型: | |||
**# '''Direct''' 类型:将消息中的 Routing key 与该 Exchange 关联的所有 Binding 中的 Routing key进行比较,如果相等,则发送到该 Binding 对应的 Queue 中 | |||
**# '''Topic''' 类型:将消息中的 Routing key 与该 Exchange 关联的所有 Binding 中的 Routing key进行对比,如果匹配上了,则发送到该 Binding 对应的 Queue 中。 | |||
**# '''Fanout''' 类型:直接将消息转发到所有 binding 的对应 queue 中,这种 exchange 在路由转发的时候,忽略 Routing key。 | |||
**# '''Headers''' 类型:将消息中的 headers 与该 Exchange 相关联的所有 Binging 中的参数进行匹配,如果匹配上了,则发送到该 Binding 对应的 Queue 中(不常用,作用于 Direct 类型类似)。 | |||
* '''Binding''': | |||
*: 绑定关系,用于建立消息队列和交换器之间的关系。 | |||
* '''Queue''': | |||
*: 消息队列,用来保存消息直到发送给消费者,他是消息的容器,也是消息的终点。 | |||
** '''一个消息可投入一个或者多个队列'''。 | |||
** 消息一直在队列里面,等待消费者连接到这个队列将其取走。 | |||
* '''Connection''': | |||
*: 网络连接比如tcp连接。 | |||
* '''Channel''': | |||
*: 信道,信道是建立在真实的TCP连接内地虚拟连接,AMQP命令都是通过信道发出去的,不管是发布消息,订阅队列,还是接受消息,这些动作都是在信道完成的。 | |||
** 因为对于操作系统来说建立和销毁TCP都是非常安昂贵的开销,所以引入信道的概念,以此来'''复用TCP连接'''; | |||
* '''Consumer''': | |||
*: 消息的消费者,表示一个从消息队列中取得消息的客户端应用程序。 | |||
* '''Virtual Host''': | |||
*: 虚拟主机,表示一批交换机,消息队列和相关的对象。虚拟主机是共享相同的身份认证和加密环境的独立服务器域。 | |||
** 每个vhost本质上就是一个mini版的RabbitMQ服务器,拥有自己的队列、交换器、绑定和权限机制; | |||
** vhost是AMQP概念的基础,必须在连接的时候指定,RabbitMQ默认的vhost是“'''/'''”; | |||
** Virtual Host就是一种资源隔离策略,可以在同一个RabbitMQ中划分多个隔离的区域; | |||
* '''Broker''': | |||
*: 表示消息队列服务器实体。 |
2021年5月23日 (日) 15:03的版本
关于
其中:
- Message:
- 消息,包含消息头(即附属的配置信息)和消息体(即消息内容)。
- Publisher:
- 消息的生产者,是一个向交换器发布消息的客户端应用程序。
- Exchange:
- 交换器,用来接收生产者发送的消息并且将这些消息路由给服务器中的队列。
- 四种Exchange类型:
- Direct 类型:将消息中的 Routing key 与该 Exchange 关联的所有 Binding 中的 Routing key进行比较,如果相等,则发送到该 Binding 对应的 Queue 中
- Topic 类型:将消息中的 Routing key 与该 Exchange 关联的所有 Binding 中的 Routing key进行对比,如果匹配上了,则发送到该 Binding 对应的 Queue 中。
- Fanout 类型:直接将消息转发到所有 binding 的对应 queue 中,这种 exchange 在路由转发的时候,忽略 Routing key。
- Headers 类型:将消息中的 headers 与该 Exchange 相关联的所有 Binging 中的参数进行匹配,如果匹配上了,则发送到该 Binding 对应的 Queue 中(不常用,作用于 Direct 类型类似)。
- Binding:
- 绑定关系,用于建立消息队列和交换器之间的关系。
- Queue:
- 消息队列,用来保存消息直到发送给消费者,他是消息的容器,也是消息的终点。
- 一个消息可投入一个或者多个队列。
- 消息一直在队列里面,等待消费者连接到这个队列将其取走。
- Connection:
- 网络连接比如tcp连接。
- Channel:
- 信道,信道是建立在真实的TCP连接内地虚拟连接,AMQP命令都是通过信道发出去的,不管是发布消息,订阅队列,还是接受消息,这些动作都是在信道完成的。
- 因为对于操作系统来说建立和销毁TCP都是非常安昂贵的开销,所以引入信道的概念,以此来复用TCP连接;
- Consumer:
- 消息的消费者,表示一个从消息队列中取得消息的客户端应用程序。
- Virtual Host:
- 虚拟主机,表示一批交换机,消息队列和相关的对象。虚拟主机是共享相同的身份认证和加密环境的独立服务器域。
- 每个vhost本质上就是一个mini版的RabbitMQ服务器,拥有自己的队列、交换器、绑定和权限机制;
- vhost是AMQP概念的基础,必须在连接的时候指定,RabbitMQ默认的vhost是“/”;
- Virtual Host就是一种资源隔离策略,可以在同一个RabbitMQ中划分多个隔离的区域;
- Broker:
- 表示消息队列服务器实体。