一个生产者-消费者模型,主要用于接收、存储和转发消息。
可以类比成A寄东西给B,A将包裹送到邮局,邮局根据包裹地址和自己服务区域的地址匹配,打包装车,最后通过快递员送到B手上;RabbitMQ相当于邮局、邮箱、快递员整个系统。宏观上看就是A将包裹给系统,系统将包裹给到B
参照:
超详细的RabbitMQ入门,看这篇就够了!-阿里云开发者社区 (aliyun.com)
rabbitMQ中的Vhost理解、创建和使用 - 不变的变 - 博客园 (cnblogs.com)
《RabbitMQ实战指南》
结构图:
概念解析
生产者(Producer)——投递消息,发布到RabbitMq中。
虚拟主机(virtual host)——每一个RabbitMQ服务器都能创建虚拟消息服务器,我们称之为虚拟主机。每一个vhost本质上是一个mini版的RabbitMQ服务器,拥有自己的交换机、队列、绑定等,拥有自己的权限机制
连接
连接(Connection)——基于TCP创建连接
信道(Channel)——信道是建立在Connection之上的虚拟连接,
- Rabbitmq每条AMQP指令都是通过信道完成的
- 每个信道都会被指派一个唯一ID
- 每个线程把持一个信道,这样可保证每个线程的私密性,就像独立的连接一样
- 建立信道主要是实现TCP连接复用,避免多个线程生产或者消费消息时创建太多TCP连接,创建和销毁TCP连接对系统是很昂贵的开销,也便于管理
Connection与Channel的关系类比:就像一条公路,公路上划分了多个车道
因为每个TCP带宽有限,太多信道复用一个Connection也会产生性能瓶颈,进而使得整体的流量被限制
RabbitMQ Server(Broker)
对RabbitMQ来说一个Broker阔以作为一个服务节点
大致流程:
Exchange:交换器——生产者将消息交给交换机,交换机将消息路由(分发)到一个或多个队列中。
不同的交换机类型,对应RoutingKey与BindingKey不同的匹配规则
RoutingKey:生产者将消息发送给交换机时指定,用来指定这个消息的路由规则,这个RoutingKey要与交换机类型、绑定键(BindingKey)联合使用才能生效
BingingKey:RabbitMQ通过绑定将交换器和队列关联起来,在绑定的时候指定
过程:生产者将消息发送给交换机时带一个RoutingKey,当RoutingKey与BindingKey通过交换器类型对应的规则匹配,将消息路由到对应的队列当中。
在direct里对应的RoutingKey与BingingKey要一致
标签:RoutingKey,基础,RabbitMQ,概念,信道,交换机,TCP,消息 From: https://www.cnblogs.com/summerZoo/p/17142219.html类比:以direct类型举例,京东有武汉、北京、上海等地方仓库(BingingKey绑定多个地域),小明现在想京东寄一个东西到武汉,京东会匹配下自己有没有武汉这个仓库(精准匹配的过程),如果有,就将小明包裹投递到武汉这个仓库(消息路由到队列中),如果不匹配,则包裹退回或遗弃。