当前位置: 首页 > news >正文

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

目录

# 开篇

RabbitMQ介绍

通讯概念

1. 初始MQ及类型

2. MQ的架构

2.1 RabbitMQ的结构和概念

2.2 RabbitMQ消息流示意图

3. MQ下载使用

3.1 Docker下载MQ参考

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
特性RabbitMQActiveMQRocketMQKafka
公司/社区RabbitApache阿里Apache
开发语言ErlangJavaJavaScala & Java
协议支持AMQP, XMPP, SMTP, STOMPOpenWire, 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参考

# 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

  • 访问地址:http://linuxip:15672
  • 登录账号密码默认:guest

http://www.lryc.cn/news/388709.html

相关文章:

  • electron线上更新
  • 谈谈检测浏览器类型
  • Django 和 Django REST framework 创建对外 API
  • 数据结构之“刷链表题”
  • 复分析——第9章——椭圆函数导论(E.M. Stein R. Shakarchi)
  • 使用kubeadm安装k8s并部署应用
  • springMVC学习
  • 深入探讨光刻技术:半导体制造的关键工艺
  • CesiumJS【Basic】- #042 绘制纹理线(Primitive方式)
  • 代码随想录第38天|动态规划
  • java生成excel,uniapp微信小程序接收excel并打开
  • sam_out 目标检测的应用
  • VLAN原理与配置
  • 使用Spring Boot实现RESTful API
  • 中英双语介绍美国常春藤联盟( Ivy League):八所高校
  • 【计算机网络】常见的网络通信协议
  • java实现http/https请求
  • NC204871 求和
  • git克隆代码warning: could not find UI helper ‘git-credential-manager-ui‘
  • Generator 是怎么样使用的以及各个阶段的变化如何
  • 一文了解Java中 Vector、ArrayList、LinkedList 之间的区别
  • 【论文复现|智能算法改进】基于自适应动态鲸鱼优化算法的路径规划研究
  • 【Win测试】窗口捕获的学习笔记
  • PostgreSQL的学习心得和知识总结(一百四十七)|深入理解PostgreSQL数据库之transaction chain的使用和实现
  • 宝塔linux网站迁移步骤
  • 电路笔记(三极管器件): MOSFETIGBT
  • Docker 镜像导出和导入
  • QueryClientProvider is not defined
  • HTTPS是什么?原理是什么?用公钥加密为什么不能用公钥解密?
  • 系统中非功能性需求的思考