小白学习手册:轻松理解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

相关推荐
拾忆,想起2 小时前
Dubbo配置方式大全:七种配置任你选,轻松玩转微服务!
服务器·网络·网络协议·微服务·云原生·架构·dubbo
普通网友2 小时前
SpringCloud系列教程:微服务的未来 (五)枚举处理器、JSON处理器、分页插件实现
spring cloud·微服务·json
ん贤2 小时前
高可靠微服务消息设计:Outbox模式、延迟队列与Watermill集成实践
redis·微服务·云原生·架构·消息队列·go·分布式系统
码界奇点8 小时前
Spring Boot 全面指南从入门到精通构建高效Java应用的完整路径
java·spring boot·后端·微服务
听风吟丶9 小时前
Java 微服务 APM 实战:Prometheus+Grafana 构建全维度性能监控与资源预警体系
java·微服务·prometheus
不被AI替代的BOT9 小时前
Spring Cloud Gateway WebFlux 模式架构分析
spring cloud·微服务
拾忆,想起10 小时前
Dubbo异步调用与主线程同步完全指南:告别阻塞,掌控并发
前端·微服务·架构·dubbo·safari
小坏讲微服务10 小时前
K8S 部署 Spring Cloud Alibaba 微服务企业实战完整使用
spring cloud·docker·微服务·云原生·容器·kubernetes·k8s
yihuiComeOn10 小时前
【大数据高并发核心场景实战】 - 设计秒杀架构必知必会的那些事
java·后端·微服务·架构
mobº10 小时前
K8s 集群部署微服务 - DevOps(一)
微服务·kubernetes·devops