首页 > 其他分享 >消息队列-RabbitMQ学习笔记(一)

消息队列-RabbitMQ学习笔记(一)

时间:2024-08-25 15:22:34浏览次数:9  
标签:存储 类比 队列 生产者 笔记 快递 RabbitMQ 消息

1. 什么是消息队列

消息队列(Message Queue,简称MQ)是一种用于在应用程序之间传递消息的技术,通常在分布式系统中使用。它提供了一种异步通信机制,使得应用程序可以通过发送和接收消息来进行数据交换。

消息队列可以用来存储消息,这就涉及到消息队列的三个关键字:存储、消息、队列

问:什么是存储?

答:存储意味着可以保存数据或者是消息

问:什么是消息?

答:消息可能是某种数据结构,例如:字符串、对象、二进制、JSON数据等

问:什么是队列?

答:一种先进先出的数据结构

消息队列的应用场景(作用):在多个不同的系统、应用之间实现消息的传输(也可以存储)。不需要考虑传输应用的编程语言、系统、框架等等。例如,可以让 java 开发的应用发消息,让 php 开发的应用收消息,这样就不用把所有代码写到同一个项目里(应用解耦)。

2. 消息队列模型

消息队列主要由四部分组成:消息生产者(producer)、消息消费者(consumer)、消息(message)和消息队列(queue)

类比:快递员送快递,不用等取件人来拿,可以把快递存入到快递柜,然后发送取件通知给收货人,等到收货人有空的时候去快递柜取出快递。这个过程中快递员不用等收件人来取,取件人也不用特地去取快递,等有空时候取出快递柜里的包裹就可以了。节省了双方的时间。

可以看出消息队列的一个主要优点是可以集中存储消息,使得消息的发送者和接收者无需同时在线,实现了发送者和接收者的解耦。这就是消息队列的核心作用。

消息队列模型总结:

生产者:Producer,类比为快递员,发送消息的人(客户端)

消费者:Consumer,类比为取快递的人,接受读取消息的人(客户端)

消息:Message,类比为快递,就是生产者要传输给消费者的数据

消息队列:Queue ,类比快递柜,就是用来存储消息的地方

问:为什么不直接传输,要用消息队列?

答:生产者不用关心你的消费者要不要消费、什么时候消费,我只需要把东西给消息队列,我的工作就算完成了。 生产者和消费者实现了解耦,互不影响。

标签:存储,类比,队列,生产者,笔记,快递,RabbitMQ,消息
From: https://blog.csdn.net/qq_46614863/article/details/141364437

相关文章

  • 诺埃尔的读书笔记1
    是诺埃尔。纯诺埃尔。很少来这里。随便写点什么。手打。写评论未必会波及到书里的每一篇文章。比如今天就是讲短篇集子里的5/9。《飞行家》/作者双雪涛/理想国文库/东北短篇集胡乱配文(引自《切格瓦拉》):Don'taskshouldfireburning,askcolddarkalsothere;Don'taskt......
  • linux下试验中间件canal的example示例-binlog日志的实时获取显示以及阿里巴巴中间件ca
    一、linux下试验中间件canal的example示例-binlog日志的实时获取显示    今天重装mysql后,进行了canal的再次试验,原来用的mysql5.7,今天重装直接换了5.6算了。反正测试服务器的mysql也不常用。canal启动后日志显示examplepreparetofindstartpositionjustshowmaste......
  • 机器学习详解-第二章-实践方法论-学习笔记-[DataWhale X 李宏毅苹果书 X AI夏令营]
    在调整模型的过程中可能会遇到许多问题,这里为了处理这些问题(前期初学情况),从而给出了一个章节用于学习相关的技巧。1.模型偏差模型偏差可能会影响模型训练,我们在训练的时候,将所有的函数集合在一起得到一个函数的集合,但是这个函数的集合大小是我们不确定的,可能会因为太小,其中的......
  • 算法的学习笔记—包含 min 函数的栈(牛客JZ30)
    ......
  • SpringBoot文档之开源软件依赖的阅读笔记
    DependencyVersions维护开源软件清单,并不是一个轻松、愉快的工作。很好奇SpringBoot的开发团队使用什么方式来管理、维护依赖清单,完成兼容性验证工作等。ManagedDependencyCoordinatesSpringBoot集成的开源软件的清单,以及版本号。VersionProperties比如使用${acti......
  • SpringBoot文档之配置参数的元数据的阅读笔记
    ConfigurationMetadata现代的IDE通过解析配置项的元数据信息,从而可以为开发者提供提示信息和补齐能力,提高维护配置文件的效率。SpringBoot支持的配置文件,比如application.properties或者application.yaml。对于一般的开发者而言,只需享受SpringBoot带来的便利。而对于组件的开......
  • SpringBoot文档之Jar文件格式的阅读笔记
    TheExecutableJarFormat使用spring-boot-maven-plugin构建项目时,生成的目标jar文件的格式的说明。NestedJARs以JarLauncher为例:META-INF/MANIFEST.MF,定义jar的元数据。org.springframework.boot.loader.launch.JarLauncher.class,jar的启动类。BOOT-INF/classes/,放......
  • CentOS7 安装及配置 RabbitMQ
    主要总结自:Centos7安装RabbitMQ1、安装前准备由于RabbitMQ使用的是Erlang语言开发的,因此在安装RabbitMQ之前需要安装Erlang环境,Erlang与RabbitMQ的下载地址分别为:Erlang:https://github.com/rabbitmq/erlang-rpm/releasesRabbitMQ:https://github.com/rabbitmq/rabbitmq-ser......
  • SpringBoot文档之Logging的阅读笔记
    市面上常见的日志记录框架,如下:LogbackLog4j2Log4j1.X官方维护已停止,基本上只有老旧项目在使用。JULCommonsLoggingSLF4J新项目启动时,通常集成SLF4J和Log4j2,代码中使用SLF4J的日志API来记录日志,使用Log4j2来管理日志的输出、管理日志文件。有一些项目会使用JUL或者Com......
  • CMake构建学习笔记4-libjpeg库的构建
    libjpeg是一个广泛使用的开源库,用于处理JPEG(JointPhotographicExpertsGroup)图像格式的编码、解码、压缩和解压缩功能,是许多图像处理软件和库的基础。libjpeg本身的构建没什么特别的,不过值得说道的是libjpeg存在一个高性能分支叫做libjpeg-turbo,通过汇编代码使用SIMD(SingleIns......