RabbitMQ快速入门指南

RabbitMQ核心概念与实战

1. MQ介绍

1.1、什么是MQ

MQ全称为Message Queue,消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信(异步通信),而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。

异步消息中两个重要概念:

  • 消息代理(message broker,MQ服务器)
  • 目的地(destination)

当消息发送者发送消息以后,将由消息代理接管,消息代理保证消息传递到指定目 的地

异步消息主要有两种形式的目的地

  • 队列(queue):点对点消息通信(point-to-point)
  • 主题(topic):发布(publish)/订阅(subscribe)消息通信
1. 2 MQ是干什么用的

应用解耦、异步、流量削锋、数据分发、错峰流控、日志收集等等…

1.3、应用场景
1.3.1 异步处理:

以用户注册为例,我们将用户信息写入数据库之后,如果再同步调用发送注册右键、发送注册短信方法,假设每一步都是50ms的话,就需要150ms以后,才可以响应用户。

我们可以用多线程的方式,发送注册邮件和发送注册短信,并发执行,假设每一步都是50ms,就需要100ms以后才可以响应用户。

上述两种方式都比较慢,可以引入一个消息队列,当将用户信息写入数据库以后,可以很快地将需要用到的信息写入消息队列,写入消息队列以后,就可以响应用户,而发送注册邮件和短息,就可以异步读取消息队列,获取相应信息,进行法注册邮件和短信。

1.3.2 应用解耦:

实现订单系统与库存系统的应用解耦

1.3.3 流量削峰:

用户发送请求,服务器接收后,首先写入消息队列。假如消息队列长度超过最大数量,则直接抛弃用户请求或跳转到错误页面

秒杀业务根据消息队列中的请求信息,再做后续处理

1.4、常见MQ产品
  • ActiveMQ:基于JMS,apache出品,在中小型企业中应用广泛
  • RabbitMQ:基于AMQP协议,Erlang语言开发,稳定性好
  • RocketMQ:基于JMS,阿里巴巴产品,目前交由Apache基金会
  • Kafka:分布式消息系统,高吞吐量,归属于Apache顶级项目

2. RabbitMQ

2.2、什么是RabbitMQ

RabbitMQ是一个开源的消息代理和队列服务器,实现了高级消息队列协议(AMQP)。它充当应用程序之间的消息中间件,允许分布式系统中的不同组件进行异步通信。RabbitMQ使用Erlang语言开发,以其高性能、可靠性和可扩展性而闻名。

2.3、消息队列的核心概念

消息队列是一种异步通信机制,它允许应用程序通过发送和接收消息来进行通信,而不需要直接连接。这种模式带来了以下优势:

  • 解耦:生产者和消费者不需要同时在线
  • 可扩展性:可以独立扩展生产者和消费者
  • 可靠性:消息可以持久化存储,确保不丢失
  • 灵活性:支持多种消息传递模式
2.4、RabbitMQ的优势和应用场景

RabbitMQ在企业级应用中具有以下优势:

  • 多协议支持:支持AMQP、STOMP、MQTT等多种协议
  • 灵活的路由:支持多种Exchange类型和复杂的路由规则
  • 集群支持:可以构建高可用的集群架构
  • 管理界面:提供Web管理控制台
  • 丰富的客户端库:支持多种编程语言

常见应用场景包括:微服务解耦、异步任务处理、系统集成、削峰填谷等

3. RabbitMQ基础概念

3.1、Exchange(交换机)类型详解

Exchange是RabbitMQ的核心组件,负责接收生产者发送的消息并将其路由到相应的队列。主要有四种类型:

Direct Exchange(直连交换器)
  • 根据routing key精确匹配路由消息
  • 适用于单播消息传递
  • 默认的交换器类型
Fanout Exchange(扇形交换器)
  • 将消息广播到所有绑定的队列
  • 忽略routing key
  • 适用于广播场景
Topic Exchange(主题交换器)
  • 基于通配符模式匹配routing key
  • 支持"*“(单个单词)和”#"(零个或多个单词)
  • 灵活的路由规则
Headers Exchange(头交换器)
  • 基于消息头属性进行路由
  • 较少使用,性能相对较低
3.2、Queue(队列)和消息持久化

Queue是存储消息的容器,具有以下特性:

  • FIFO原则:先进先出的消息处理顺序
  • 持久化:可以配置队列和消息的持久化
  • 排他性:可以设置队列只能被一个连接使用
  • 自动删除:当没有消费者时自动删除队列
3.3、Routing Key和Binding
  • Routing Key
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值