RabbitMQ 为什么需要信道?为什么不是 TCP 直接通信?
首先我们要先了解rabbitMQ的大致原理(话不多说上图)
然后还要知道几个步骤
Connection:
链接。指 rabbit 服务器和服务建立的 TCP 链接。
Channel:
信道。Channel 中文叫做信道,是 TCP 里面的虚拟链接。例如:电缆相当于 TCP,信道是一个独立光纤束,一条 TCP 连接上创建多条信道是没有问题的。
TCP 一旦打开,就会创建 AMQP 信道。无论是发布消息、接收消息、订阅队列,这些动作都是通过信道完成的。
总结:
TCP 的创建和销毁开销特别大。创建需要 3 次握手,销毁需要 4 次分手。
如果不用信道,那应用程序就会以 TCP 链接 Rabbit,高峰时每秒成千上万条链接会
造成资源巨大的浪费,而且操作系统每秒处理 TCP 链接数也是有限制的,必定造成性
能瓶颈。
信道的原理是一条线程一条通道,多条线程多条通道同用一条 TCP 链接。一条 TCP
链接可以容纳无限的信道,即使每秒成千上万的请求也不会成为性能的瓶颈。