RabbitMQ 概念介绍
-
信道:
信道是生产者/消费者与 RabbitMQ 通信的渠道。信道是建立在 TCP 连接上的虚拟连接,什么意思呢?就是说 rabbitmq 在一条 TCP 上建立成百上千个信道来达到多个线程处理,这个 TCP 被多个线程共享,每个线程对应一个信道,信道在 RabbitMQ 都有唯一的 ID ,保证了信道私有性,对应上唯一的线程使用。 -
疑问:
为什么不建立多个 TCP 连接呢?原因是 rabbit 保证性能,系统为每个线程开辟一个 TCP 是非常消耗性能,每秒成百上千的建立销毁 TCP 会严重消耗系统。所以 rabbitmq 选择建立多个信道(建立在 tcp 的虚拟连接)连接到 rabbit 上。
从技术上讲,这被称之为“多路复用”,对于执行多个任务的多线程或者异步应用程序来说,它非常有用。 -
组成要素
-
交换器 路由键 队列 绑定关系
交换器: 相当于交换机,类似于路由器 包含四种类型: direct(点对点),fanout(广播),topic(主题订阅),header(非路由键匹配,功能和direct类似,很少用)。
路由键: 作用于交换器和队列的绑定使用 (routing_key 和 绑定键 binding_key 的最大长度是 255 个字节)
队列: 队列是消息发送和接收的通道
绑定关系: 队列通过路由键(routing key,某种确定的规则)绑定到交换器,生产者将消息发布到交换器,交换器根据绑定的路由键将消息路由到特定队列,然后由订阅这个队列的消费者进行接收。 -
生产者 消费者 消息
生产者: 消息的创建者,发送到 rabbitmq
消费者: 连接到 rabbitmq,订阅到队列上,消费消息,持续订阅(basicConsumer)和单条订阅(basicGet).
消息: 包含有效载荷和标签,有效载荷指要传输的数据,标签描述了有效载荷,并且 rabbitmq 用它来决定谁获得消息,消费者只能拿到有效载荷,并不知道生产者是谁。

网友评论