目录:
消息队列核心原理(一):消息中间件与协议介绍
消息队列核心原理(二):Kafka核心原理
消息队列核心原理(三):RabbitMQ核心原理
RabbitMQ核心概念
之前我们说了Kafka的核心概念,其实这里大同小异,相似的地方我就简要提一下,重点是不同的地方。
- Broker
- Producer
- Consumer
- Message
- 生产消费的内容 ,由消息头,消息体,属性配置构成
- Queue
- 用于存放消息的容器,对于RabbitMQ的所有消息,均需要存放在Queue里面
- Channel信道
- 全双工,支持多路复用,可以发布、订阅、接收消息
- 该信道基于TCP连接,但是是虚拟连接的,是复用的TCP的连接
- Connection连接
- 一个封装在Socket层面的连接,理论上一个socket可以有多个Channel
- Exchange交换机
- 生产者将消息发送给交换机,交换机再将消息转发到一个或者多个queue中。交换机有多个,所以与queue的关系是多对多。
- RoutingKey路由键
- 生产者将消息发送给交换机,一般会指定RoutingKey,用来确定路由规则
- 最大长度为255Byte
- Binding
- 通过将交换机和Queue绑定起来,RabbitMQ才会知道怎么分配消息。当然是根据BindingKey去路由,而这个BindingKey是提前指定的。
- Virtual Host Machine
- 用于隔离环境:比如测试环境,生产环境,开发环境。
- 用于隔离业务:比如支付业务,日志业务的隔离
- 要注意的是,每个VM数据都是不互通的。一个VM不能有相同的交换机名称和队列名称。
所以,根据上述名词的解释,可以大致理清一下流程:
生产者产生消息---->指定RoutingKey,封装Socket进行连接,可以有多个信道---->消息交给交换机,交换机通过一定的规则检查RoutingKey,与BindingKey进行匹配----->匹配成功后将消息交给Queue---->消费者进行消费
Exchange交换机
特点:
- 只能转发,不能存储
- 交换机机型有多种,与Queue的关系是多对多
- 交换机类型:Direct Exchange(点对点)、Fanout Exchange&#x