小白学习手册:轻松理解MQ消息队列

目录

[# 开篇](# 开篇)

RabbitMQ介绍

通讯概念

[1. 初始MQ及类型](#1. 初始MQ及类型)

[2. MQ的架构](#2. MQ的架构)

[2.1 RabbitMQ的结构和概念](#2.1 RabbitMQ的结构和概念)

[2.2 RabbitMQ消息流示意图](#2.2 RabbitMQ消息流示意图)

[3. MQ下载使用](#3. MQ下载使用)

[3.1 Docker下载MQ参考](#3.1 Docker下载MQ参考)

[3.2 进入RabbitMQ](#3.2 进入RabbitMQ)


# 开篇

MessagesQueue 是一个抽象概念,用于描述消息队列系统的一般特性和功能。而 RabbitMQ 是一个具体的消息队列 实现,是开源的、基于 AMQP(高级消息队列协议)的消息代理软件。换句话说,RabbitMQ 是一种消息队列的实现 ,而 MessagesQueue 是消息队列这一概念的抽象表达。

消息队列是一种在应用程序之间传递消息的通信方式,常用于解耦系统组件、异步处理任务、实现负载均衡和削峰填谷等场景。MessagesQueue 这个术语可能用于描述各种消息队列系统,如 RabbitMQ、Kafka、ActiveMQ 等,以及它们之间的通用概念和特性,例如消息的发布与订阅、消息的持久化、消息路由、消息确认机制等。

总之,MessagesQueue 是对消息队列系统的抽象描述,而 RabbitMQ 是其中的一个具体实现。

RabbitMQ介绍

RabbitMQ 是一种分布式消息队列中间件 。它通过在不同的应用程序之间传递消息来实现解耦和异步通信。RabbitMQ基于AMQP(高级消息队列协议)实现,可以在分布式系统中实现可靠的消息传递。它可以在不同的进程、不同的服务器之间进行消息的传递和交换,实现了高可用性、可伸缩性和可靠性。通过使用RabbitMQ,可以将不同的应用程序、服务或者模块进行解耦,提高系统的可扩展性和可维护性。

通讯概念

  • 同步通讯:
    • 一次只能单人访问,不接受双人访问,就好比手机打电话,一次只能跟一个人通话,下一个人来了,就需要等到第一个人打完电话后,第二个人才能继续通讯。
  • 异步通讯:
    • 就好比发送的消息,我微信发送一条消息,不需要别人去确认,我还可以给其他人也发送消息,实现多人通知,跟打电话资源被占用不一样,我可以实现异步的通讯。

1. 初始MQ及类型

  • MQ (MessageQueue),中文是消息队列,字面来看就是存放消息的队列。也是事件驱动架构中的Broker。
  • MQ队列有许多特性不一的队列类型,比如常用的RabbitMQ,Act..,Roc...,kafka
特性 RabbitMQ ActiveMQ RocketMQ Kafka
公司/社区 Rabbit Apache 阿里 Apache
开发语言 Erlang Java Java Scala & Java
协议支持 AMQP, XMPP, SMTP, STOMP OpenWire, STOMP, REST, XMPP, AMQP 自定义协议 自定义协议
可用性 高 一般 高 高
单机吞吐量 一般 差 高 非常高
消息延迟 微秒级 毫秒级 毫秒级 毫秒以内
消息可靠性 高 一般 一般 一般

2. MQ的架构

2.1 RabbitMQ的结构和概念

  1. Publisher(生产者) :
    • 生产者发送消息到虚拟机里的交换机(Exchange)。
    • 发布消息的角色,相当于消息的发送者。
  2. Exchange(交换机) :
    • 交换机接收到生产者发送的消息后,根据某种路由规则将消息发送到一个或多个队列(Queue)。
    • Exchange有几种类型,常见的包括:
      • Direct Exchange:消息根据具体的路由键被投递到队列。
      • Fanout Exchange:消息广播到所有绑定到该交换机的队列。
      • Topic Exchange:消息根据通配符匹配路由键被投递到队列。
      • Headers Exchange:根据消息头属性进行路由。
  3. Queue(队列) :
    • 队列存储从交换机接收到的消息,直到消费者进行处理。
    • 队列有可能被多个消费者并发消费。
  4. Consumer(消费者) :
    • 消费者从队列中获取消息并进行处理。
    • 相当于消息的接收者。
  5. Virtual Host(虚拟主机) :
    • 虚拟主机是逻辑上的消息分组,用于多租户和权限管理。
    • 一个RabbitMQ Server中可以有多个Virtual Host,每个Virtual Host包含自己的队列、交换机和绑定关系。
  6. RabbitMQ Server(Broker) :
    • RabbitMQ的核心,负责接受、存储、转发消息。
    • 管理并维护所有的队列、交换机和虚拟主机。

2.2 RabbitMQ消息流示意图

复制代码
Publisher -> Exchange -> Queue -> Consumer
  • 生产者(Publisher):负责生产和发送消息。
  • 交换机(Exchange):根据路由键或其他规则将消息路由到相应的队列。
  • 队列(Queue):存储消息,等待消费者取走。
  • 消费者(Consumer):从队列中取走并处理消息。

这个架构设计使得RabbitMQ非常适合于解耦和异步处理系统中的消息传递,保证消息的可靠传输和处理。

3. MQ下载使用

3.1 Docker下载MQ参考

ruby 复制代码
# 1.使用docker查询rabbitmq的镜像
docker search rabbitmq

# 2.安装镜像
docker pull rabbitmq

# 3.运行mq:
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq

3.2 进入RabbitMQ

相关推荐
晚安code17 小时前
RPC 到底是什么:微服务内部调用的首选,以及它藏起来的三个坑
微服务·rpc
晚安code17 小时前
微服务架构和单体架构的区别:拆之前你得先想清楚这件事
微服务·架构
code_slave(码畜)2 天前
微服务架构落地:基础服务 —— 报表服务(中篇:元数据、查询引擎、缓存与权限落地)
spring boot·spring cloud·缓存·微服务·架构
code_slave(码畜)2 天前
微服务架构落地:基础服务 —— 报表服务(AI 集成篇:AI 增强报表能力)
人工智能·spring boot·spring cloud·微服务·架构
code_slave(码畜)2 天前
微服务架构落地:公共中间件层总览——不承载业务,只承载稳定性
spring boot·spring cloud·微服务·中间件·架构
code_slave(码畜)2 天前
微服务架构落地:基础服务 —— 报表服务(上篇:定位、边界与整体架构)
java·spring boot·spring cloud·微服务·架构
贾斯汀frank3 天前
Spring Boot + K8s + Istio 与 Spring Cloud:微服务治理能力对比
spring cloud·微服务·istio
自强的小白3 天前
微服务之间的依赖传递和调用(实体类的模块传递以及负载均衡的调用!)注册中心
java·微服务
Thomas.Sir4 天前
第11课:Nacos 多环境、多服务配置隔离 & 配置优先级详解
spring cloud·微服务·nacos