RabbitMQ官网及学习资料
RabbitMQ官网:https://rabbitmq.com/download.html
rabbitmq学习文档:
https://frxcat.fun/pages/e645d9/(推荐)
https://blog.csdn.net/weixin_42039228/article/details/123493937
https://zhangc233.github.io/2021/07/23/RabbitMQ/
RabbitMQ工作原理:
-
Broker: 接收和分发消息的应用,RabbitMQ Server 就是 Message Broker。
-
Virtual host: 出于多租户和安全因素设计的,把 AMQP 的基本组件划分到一个虚拟的分组中,类似于网络中的namespace 概念。当多个不同的用户使用同一个 RabbitMQ server 提供的服务时,可以划分出多个vhost,每个用户在自己的 vhost 创建 exchange / queue 等。
-
Connection: publisher / consumer和 broker 之间的 TCP 连接。
-
channel: 如果每一次访问 RabbitMQ 都建立一个 Connection,在消息量大的时候建立 TCPConnection 的开销将是巨大的,效率也较低。Channel 是在 connection 内部建立的逻辑连接,如果应用程序支持多线程,通常每个 thread 创建单独的 channel 进行通讯,AMQP method 包含了 channel id 帮助客户端和 message broker 识别 channel,所以 channel 之间是完全隔离的。Channel 作为轻量级的Connection 极大减少了操作系统建立 TCP connection 的开销。
-
Exchange: message 到达 broker 的第一站,根据分发规则,匹配查询表中的 routing key,分发消息到 queue 中去。常用的类型有: direct (point-to-point), topic (publish-subscribe) and fanout(multicast)。
-
Queue: 消息最终被送到这里等待 consumer 取走。
-
Binding: exchange 和 queue 之间的虚拟连接,binding 中可以包含 routing key,Binding 信息被保存到exchange 中的查询表中,用于 message 的分发依据。