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

交换器和队列的关系

1. 交换器是通过路由键和队列绑定在一起的,如果消息拥有的“路由键”跟队列和交换器的“路由键”匹配,那么消息就会被路由到该绑定的队列当中去

2. 也就是说,消息到队列的过程中,消息首先会经过交换器,接下来交换器再通过路由键匹配,分发消息到具体的队列中去

3. 路由键可以就是为匹配的规则 

 

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

1. TCP的创建和销毁,开销大,创建需要三次握手,销毁需要四次分手

2. 如果不使用信道,那么引用程序就会使用TCP的方式连接到rabbitmq,高峰时每秒成千上万条连接会造成资源的巨大浪费(一条tcp消耗资源,成千上万的tcp会非常消耗资源),而且操作系统每秒处理TCP连接数量也是有限的,必定会造成性能瓶颈

3.信道的原理是一条线程一条信道,多条线程多条信道共同使用一条TCP连接。一条TCP连接可以容纳无限的信道,及时每秒造成成千上万的请求也不会造成性能瓶颈

posted @ 2019-11-06 11:41  爱吃醋的工程师  阅读(321)  评论(0编辑  收藏  举报