首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >RabbitMQ

RabbitMQ

作者头像
1ess
发布2021-11-01 10:11:57
发布2021-11-01 10:11:57
8100
举报
文章被收录于专栏:0x7c00的专栏0x7c00的专栏

RabbitMQ

發佈於 2020-05-14

本篇,我们介绍一下消息队列(MessageQueue)以及生产中比较常使用的框架 RabbitMQ。

什么是消息队列

消息队列允许应用程序通过相互发送消息进行通信。消息队列在目标程序繁忙或未连接时提供临时消息存储。

基本架构

消息队列的基本架构很简单: 客户机应用程序被称为生产者(producers),用于创建消息并将消息传递到消息队列。另一个应用程序称为消费者(consumer),它连接到队列并获取要处理的消息。放置到队列中的消息将被存储,直到使用者检索它们。

消息队列提供异步通信协议,该协议是一个将消息放入消息队列的系统,并且不需要对处理立即响应。这种处理消息的方式将生产者与消费者分离开来,因此它们不需要同时与消息队列进行交互。

优点

使用消息队列的优点主要有三个:解耦、异步、削峰。

解耦

解耦描述了系统的一个部分对另一个部分的依赖程度,当两个或多个系统能够在不连接的情况下通信,就可以实现解耦。 如果系统中的一个进程无法从队列中处理消息,其他消息仍可以被添加到队列中,并在系统恢复时进行处理。还可以使用消息队列来延迟处理消息。这种处理消息的方式便于创建了易维护和易扩展的系统。

异步

非必要的业务逻辑可以将消息写入消息队列以异步的方式运行,以加快响应速度。

削峰

在突发异常流量时,将消息写入消息队列,待流量恢复后,依次处理队列内消息,可以削峰平谷,防止服务器宕机。

RabbitMQ

RabbitMQ 是开源的面向消息的中间件,它实现了高级消息排队协议(AMQP)。

交换器(exchange)

消息不会直接发布到队列,通常生产者向交换器发送消息。交换器负责在 bindings 和 routing keys 的帮助下将消息路由到不同的队列。bindings 是队列和交换器之间的链接。

消息流

RabbitMQ 中的消息流:

  1. 首先指定交换器类型来创建交换器,然后生产者向创建的交换器发布消息
  2. 交换器接收消息并负责路由消息。交换器根据交换器类型考虑不同的消息属性,例如 routing keys
  3. 从交换器到队列方向创建 bindings
  4. 消息将一直留在队列中,直到被消费者处理
  5. 消费者处理消息

交换器类型

  1. Direct: 消息被路由到其绑定键与消息的路由键完全匹配的队列
  2. Fanout: 交换器将消息路由到绑定到它的所有队列
  3. Topic: Topic 交换在路由键和绑定中指定的路由模式之间进行通配符匹配

RabbitMQ 中的重要概念

  1. 生产者(Producer): 发送消息的应用程序
  2. 消费者(Consumer): 接收消息的应用程序
  3. 队列(Queue): 存储消息的缓冲区
  4. 消息(Message): 通过 RabbitMQ 从生产者发送到消费者的信息
  5. 连接(Connection): 应用程序和 RabbitMQ 代理之间的 TCP 连接
  6. 通道(Channel): 连接内部的虚拟连接。当发布或使用队列中的消息时,这一切都是通过通道完成的
  7. 交换器(Exchange): 接收来自生产者的消息,并根据交换器类型定义的规则将消息推送到队列。要接收消息,需要将队列绑定到至少一个交换器。
  8. 绑定(Binding): 绑定是队列和交换器之间的链接
  9. 路由键(Routing Key): 交换器用来决定如何将消息路由到队列的键。将路由键看作消息的地址
  10. 用户(User): 可以使用给定的用户名和密码连接到 RabbitMQ,可以为每个用户分配权限,例如在实例中读取、写入和配置特权的权限。还可以为用户分配特定虚拟主机的权限
  11. 虚拟主机(Vhost): 提供一种使用相同 RabbitMQ 实例隔离应用程序的方法。不同的用户可以对不同的 vhost 拥有不同的权限
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-05-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是消息队列
  • 基本架构
  • 优点
    • 解耦
    • 异步
    • 削峰
  • RabbitMQ
    • 交换器(exchange)
    • 消息流
    • 交换器类型
    • RabbitMQ 中的重要概念
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档