Broker应用
- 接收和分发消息的应用,RabbitMQ Server 就是Message Broker
AMQP协议
- 即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。
Virtual host虚拟分组
- 出于多租户和安全因素设计的,把 AMQP 的基本组件划分到一个虚拟的分组中,类似于网络中的namespace 概念。
- 当多个不同的用户使用同一个RabbitMQ server 提供的服务时,可以划分出多个vhost,每个用户在自己的 vhost 创建 exchange(交换机)/queue(队列) 等
Connection连接
- publisher(生产者)/consumer(消费者) 和broker(MQ中间件) 之间的TCP 连接
Channel信道
- 如果每一次访问 RabbitMQ 都建立一个Connection,在消息量大的时候建立 TCP Connection 的开销将是巨大的,效率也较低。
- 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 的分发依据