文章目录1. RabbitMQ核心概念1.1 生产者Producer和消费者Consumer1.2 Connection和Channel1.3 Vrtual host1.4 Queue1.5 Exchange1.5.1 Rabbit MQ交换机的四种类型1.5.2 Routing Key 和 Biding Key1.6 AMQP协议更多RabbitMQ相关知识 RabbitMQ专栏1. RabbitMQ核心概念RabbitMQ 是一个消息中间件也是一个生产者消费者模型它负责接收、存储并转发消息。1.1 生产者Producer和消费者ConsumerProducer消息的生产者是RabbitMQ Server的客户端向RabbitMQ发送消息。Consumer消息的消费者是RabbitMQ Server的客户端从RabbitMQ中接收消息。1.2 Connection和Channel1Connection:连接。是客户端和 RabbitMQ 服务器之间的一个TCP 连接这个连接是消息传递的基础它负责传输客户端和服务器之间的所有数据和控制信息。2Channel:信道、通道。Channel 是在 Connection 之上的抽象层。在RabbitMQ中一个TCP连接中即一个 Connection 中可以有多个 Channel每个 Channel 都是独立的虚拟连接消息的发送和接收都是基于 Channel 的。channel 的主要作用是将消息的读写操作复用到同一个 TCP 连接上这样就可以减少建立连接、关闭连接的开销从而提高系统的性能。1.3 Vrtual hostVrtual host 是虚拟主机这是一个虚拟概念。它为消息队列提供了一种逻辑上的隔离机制。对于 RabbitMQ 而言一个 Broker Server 上可以存在多个 Vrtual host。当多个不同的⽤⼾使⽤同⼀个 RabbitMQ Server 提供的服务时可以虚拟划分出多个 Vrtual host每个⽤⼾在⾃⼰的 Vrtual host 创建 exchange/queue 等 。类似于MySQL中数据库的概念。1.4 QueueQueue是队列。是RabbitMQ的内部对象用于存储消息。一个队列可以被多个消费者订阅。一个消费者可以订阅多个队列。1.5 ExchangeExchange 是交换机。 交换机是消息到达 Broker 的第一站它负责接收生产者发送到RabbitMQ的消息并根据特定的规则把这些消息路由到一个或多个队列中。交换机只负责转发消息不具备存储消息的能力因此如果没有任何队列与交换机进行绑定或者没有符合路由规则的队列消息会丢失。1.5.1 Rabbit MQ交换机的四种类型不同的交换机类型就对应着不同的工作模式1.Fanout:广播。将消息交给所有绑定到交换机的队列(发布/订阅模式)。2.Dirext顶向。将消息交给符合指定 routing key 的队列(routing模式)。3.Topic通配符。将消息交给符合 routing pattern 的队列(通配符模式)。4.Headers:headers类型的交换机不依赖于路由的匹配规则来路由消息而是根据发送消息内容中的headers属性来进行匹配。这种交换机的性能很差也不实用。1.5.2 Routing Key 和 Biding Key1Routing Key路由键。生产者将消息发送给交换机时指定的一个字符串用来告诉交换机应该如何处理这个消息.2Biding Key绑定键。RabbitMQ 中通过 Binding(绑定键) 将交换器与队列关联起来, 在绑定的时候⼀般会指定⼀个Binding Key, 这样 RabbitMQ 就知道如何正确地将消息路由到队列了.生产者在发送消息的时候会携带一个Routing Key交换机就会将消息发送给 Routing Key 和 Binding Key 能匹配上的队列。一个队列和交换机之间可以有多个 Binding Key如果匹配上一个交换机就会消息发给该队列。1.6 AMQP协议AMQPAdvanced Message Queuing Protocol是一种高级消息队列协议, AMQP定义了一套确定的消息交换功能, 包括交换器(Exchange), 队列(Queue) 等。这些组件共同工作, 使得生产者能够将消息发送到交换器 然后由队列接收并等待消费者消费. AMQP还定义了一个网络协议, 允许客户端应用通过该协议与消息代理和AMQP模型进行交互通信。RabbitMQ是AMQP协议的实现。
郑州网站建设
网页设计
企业官网