RabbitMQ 为什么需要信道?为什么不是 TCP 直接通信?

首先我们要先了解rabbitMQ的大致原理(话不多说上图)

 

 

 

然后还要知道几个步骤

 

 

Connection:

  链接。指 rabbit 服务器和服务建立的 TCP 链接。
 
 
 

Channel:

 
  信道。Channel 中文叫做信道,是 TCP 里面的虚拟链接。例如:电缆相当于 TCP,信道是一个独立光纤束,一条 TCP 连接上创建多条信道是没有问题的。
  TCP 一旦打开,就会创建 AMQP 信道。无论是发布消息、接收消息、订阅队列,这些动作都是通过信道完成的。
 
 

总结:

 

  TCP 的创建和销毁开销特别大。创建需要 3 次握手,销毁需要 4 次分手。
 
  如果不用信道,那应用程序就会以 TCP 链接 Rabbit,高峰时每秒成千上万条链接会
造成资源巨大的浪费,而且操作系统每秒处理 TCP 链接数也是有限制的,必定造成性
能瓶颈。
 
  信道的原理是一条线程一条通道,多条线程多条通道同用一条 TCP 链接。一条 TCP
链接可以容纳无限的信道,即使每秒成千上万的请求也不会成为性能的瓶颈。
 
posted @ 2021-03-08 15:52  老油条666  阅读(438)  评论(0编辑  收藏  举报