消息中间件RabbitMQ学习笔记---RabbitMQ中Connection与Channel的关系

消息中间件RabbitMQ学习笔记—RabbitMQ中Connection与Channel的关系

1.关系简介

  1. 生产者和消费者,需要与RabbitMQ Broker 建立TCP连接,也就是Connection 。
  2. 一旦TCP 连接建立起来,客户端紧接着创建一个AMQP 信道(Channel),每个信道都会被指派一个唯一的ID。
  3. 信道是建立在Connection 之上的虚拟连接, RabbitMQ 处理的每条AMQP 指令都是通过信道完成的。
    消息中间件RabbitMQ学习笔记---RabbitMQ中Connection与Channel的关系_第1张图片

2.为什么不直接使用TCP连接,而是使用信道?

  1. RabbitMQ 采用类似NIO的做法,复用TCP 连接,减少性能开销,便于管理。
  2. 当每个信道的流量不是很大时,复用单一的Connection 可以在产生性能瓶颈的情况下有效地节省TCP 连接资源。
  3. 当信道本身的流量很大时,一个Connection 就会产生性能瓶颈,流量被限制。需要建立多个Connection ,分摊信道。具体的调优看业务需要。
  4. 信道在AMQP 中是一个很重要的概念,大多数操作都是在信道这个层面进行的。

3.总结一下

  1. 右下图可知
  2. TCP连接是java的NIO连接,也就是Connection,代表了应用程序和消息服务器之间的通信链路
  3. 每个信道在进行操作的时候要连接Connection,也就是AMQP的Connection
    消息中间件RabbitMQ学习笔记---RabbitMQ中Connection与Channel的关系_第2张图片

你可能感兴趣的:(消息队列Mq)