RabbitMQ-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

1.什么是 RabbitMQ

RabbitMQ 是一个开源的消息队列。RabbitMQ 可以让应用程序在分布式环境下进行异步通信从而实现解耦和高可用性。它采用生产者-消费者模式来处理消息并提供了许多高级特性如消息确认、消息持久化、消息过期等。

也可能直接问什么是消息队列消息队列就是一个使用队列来通信的组件。

2.RabbitMQ 的特点?

  • 可靠性: RabbitMQ 使用一些机制来保证可靠性 如持久化、传输确认及发布确认等。

  • 灵活的路由 : 在消息进入队列之前通过交换器来路由消息。对于典型的路由功能 RabbitMQ 己经提供了一些内置的交换器来实现。针对更复杂的路由功能可以将多个交换器绑定在一起 也可以通过插件机制来实现自己的交换器。

  • 扩展性: 多个 RabbitMQ 节点可以组成一个集群也可以根据实际业务情况动态地扩展 集群中节点。

  • 高可用性 : 队列可以在集群中的机器上设置镜像使得在部分节点出现问题的情况下队 列仍然可用。

  • 多种协议: RabbitMQ 除了原生支持 AMQP 协议还支持 STOMP MQTT 等多种消息 中间件协议。

  • 多语言客户端 :RabbitMQ 几乎支持所有常用语言比如 Java、 Python、 Ruby、 PHP、 C#、 JavaScript 等。

  • 管理界面 : RabbitMQ 提供了一个易用的用户界面使得用户可以监控和管理消息、集 群中的节点等。

  • 插件机制 : RabbitMQ 提供了许多插件 以实现从多方面进行扩展当然也可以编写自 己的插件。

3.RabbitMQ 核心概念

RabbitMQ 的整体模型架构如下

3.1 生产者和消费者

  • 生产者publisher生产消息的一方

  • 消费者consumer消费消息的一方

消息一般由 2 部分组成消息头或者说是标签 Label和 消息体

  • 消息体也可以称为 payLoad消息体是不透明的

  • 而消息头则由一系列的可选属性组成这些属性包括 routing-key路由键、priority相对于其他消息的优先权、delivery-mode指出该消息可能需要持久性存储等。生产者把消息交由 RabbitMQ 后RabbitMQ 会根据消息头把消息发送给感兴趣的 Consumer(消费者)。

3.2 交换机

Exchange(交换器) 用来接收生产者发送的消息并将这些消息路由给服务器中的队列如果路由不到或许会返回给 Producer(生产者) 或许会被直接丢弃掉 。RabbitMQ 的 Exchange(交换器) 有 4 种类型不同的类型对应着不同的路由策略direct(默认)、fanout、topic、headers不同类型的 Exchange 转发消息的策略有所区别。

RoutingKey(路由键)生产者将消息发给交换器的时候一般会指定一个 RoutingKey(路由键)用来指定这个消息的路由规则而这个 RoutingKey 需要与交换器类型和绑定键(BindingKey)联合使用才能最终生效。

BindingKey(路由键)BindingKey 用来将交换器和消息队列连接起来。Exchange 和 Queue 的绑定可以是多对多的关系。

交换机类型

RabbitMQ 常用的 Exchange Type 有 fanoutdirecttopicheaders 这四种每种交换机的路由规则去Guide看吧。

3.3 消息队列

Queue(消息队列) 用来保存消息直到发送给消费者。一个消息可投入一个或多个队列。消息会一直在队列里面等待消费者连接到这个队列将其取走。

多个消费者可以订阅同一个队列这时队列中的消息会被平均分摊Round-Robin即轮询给多个消费者进行处理而不是每个消费者都收到所有的消息并处理这样避免消息被重复消费。

3.4 Broker

可以将一个 RabbitMQ Broker 看作一台 RabbitMQ 服务器。RabbitMQ Broker 是 RabbitMQ 消息中间件的核心部分它通过队列、交换机和绑定等机制实现了消息的路由和传递确保了生产者和消费者之间的可靠通信它还提供了诸如消息持久化、消息确认、消息过期等功能。

4.AMQP 是什么?

AMQP 是一种开放的、标准化的消息协议用于消息中间件系统之间的通信。RabbitMQ 就是 AMQP 协议的具体实现。RabbitMQ 中的交换器、交换器类型、队列、绑定、路由键等都是遵循的 AMQP 协议中相应的概念实现的。

5.说说生产者 Producer 和消费者 Consumer?

生产者消息生产者就是投递消息的一方。消息一般包含两个部分消息体和标签。

消费者消费消息也就是接收消息的一方。消费者连接到 RabbitMQ 服务器并订阅到队列上。消费消息时只消费消息体丢弃标签。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: RabbitMQ