1、RabbitMQ基础
一、基础架构
Broker(RabbitMQ Server):接收和分发消息的应用,Broker(RabbitMQ Server)类似于MySQL服务。
Virtual host:出于多租户和安全因素设计的,把 AMQP的基本组件划分到一个虚拟的分组中,类似于网络中的 namespace 概念。当多个不同的用户使用同一个 RabbitMQ server 提供的服务时,可以划分出多个Virtual host,每个用户在自己的 Virtual host创建交换机(exchange)和队列(queue)。
Connection:生产者(publisher)/消费者(consumer) 和Broker(RabbitMQ Server)之间的 TCP长连接。
Channel:如果每一次访问 RabbitMQ 都建立一个Connection,在消息量大的时候建立Connection的开销将是巨大的,效率也较低。因此Channel 是在Connection内部建立的逻辑连接,如果应用程序支持多线程,通常每个thread创建单独的channel进行通讯,AMQP method 包含了channel id帮助客户端和Broker(RabbitMQ Server)识别对应的channel,所以channel 之间是完全隔离的。channel 作为轻量级的Connection极大减少了操作系统建立 TCP connection 的开销。
二、工作模式
2.1、简单模式
2.3、发布订阅模式
发布订阅模式中要手动创建交换机(exchange),有3种不同类型。
2.3.1、广播模式(type:Fanout)
将消息交给所有绑定到交换机的队列。
2.3.2、Routing定向路由模式(type:Direct)
队列与交换机的绑定,要指定一个 RoutingKey(路由key)
消息的发送方向交换机发送消息时,也必须指定消息的RoutingKey
交换机不再把消息交给每一个绑定的队列,而是根据消息的RoutingKey进行判断,只有队列与消息的RoutingKey 相同,才能绑定成功。
2.3.3、Routing通配路由模式(type:Topic)
队列与交换机的绑定,要指定一个 RoutingKey(路由key)
消息的发送方向交换机发送消息时,也必须指定消息的RoutingKey。
交换机不再把消息交给每一个绑定的队列,而是根据消息的RoutingKey进行判断,只有队列与消息的RoutingKey满足给定的通配规则,才能绑定成功。
通配符规则:
# 匹配一个或多个词
* 匹配1个词
例如:item.# 能够匹配 item.insert.abc 或者 item.insert。
item.* 只能匹配 item.insert。
Exchange(交换机)只负责转发消息,不具备存储消息的能力,因此如果没有任何队列与 Exchange 绑定,或者没有符合路由规则的队列,那么消息会丢失!
版权声明
非特殊说明,本文由Zender原创或收集发布,欢迎转载。
上一篇:为什么使用消息队列 下一篇:2、RabbitMQ高级特性
ZENDER




发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。