💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
:-: ![](https://img.kancloud.cn/09/e7/09e74be6d71dc1eaa0a66c028515d430_1227x587.jpg) RabbitMQ工作原理 <br/> **1. Broker** 接收和分发消息的应用,RabbitMQ Server 就是 Message Broker 。 <br/> **2. Virtual host** 出于多租户和安全因素设计的,把 AMQP(高级消息队列协议)的基本组件划分到一个虚拟的分组中,类似于网络中的 namespace 概念。当多个不同的用户使用同一个 RabbitMQ server 提供的服务时,可以划分出多个 vhost,每个用户在自己的 vhost 创建 exchange/queue 等。 <br/> **3. Connection** Producer/consumer 和 broker 之间的 TCP 连接。 <br/> **4. Channel** 如果每一次访问 RabbitMQ 都建立一个 Connection,在消息数量大的时候建立 TCP Connection 的开销将是巨大的,效率也较低。 <br/> Channel 是在 Connection 内部建立的逻辑连接,如果应用程序支持多线程,通常每个 thread 创建单独的 channel 进行通讯,AMQP method 包含了 channel id 帮助客户端和 message broker 识别 channel,所以 channel 之间是完全隔离的。<mark>Channel 作为轻量级的 Connection 极大减少了操作系统建立 TCP connection 的开销</mark>。 <br/> **5. Exchange(交换机)** message 到达 broker 的第一站,不同类型的交换机根据分发规则,匹配查询表中的 routing key,分发消息到 queue 中去。 <br/> 常用的交换机类型有:direct (point-to-point)、topic (publish-subscribe) 、fanout (multicast)。 <br/> **6. Queue** 消息最终被送到这里等待 consumer 取走。 <br/> **7. Binding** exchange 和 queue 之间的虚拟连接,binding 中可以包含 routing key,Binding 信息被保存到 exchange 中的查询表中,用于 message 的分发依据。