【图解RabbitMQ-1】图解消息队列是什么玩意儿?它的应用场景有哪些?

🧑‍💻作者名称:DaenCode
🎤作者简介:CSDN实力新星,后端开发两年经验,曾担任甲方技术代表,业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开发。技术尚浅,闭关学习中······
😎人生感悟:尝尽人生百味,方知世间冷暖。
📖所属专栏:图解RabbitMQ


在这里插入图片描述


专栏推荐

  • 专门为Redis入门打造的专栏,包含Redis基础知识、基础命令、五大数据类型实战场景、key删除策略、内存淘汰机制、持久化机制、哨兵模式、主从复制、分布式锁等等内容。链接>>>>>>>>>《Redis从头学》
  • SpringBoot实战相关专栏,包含SpringBoot过滤器、拦截器、AOP实现日志、整合Freemaker、整合Redis等等实战相关内容,多篇文章登入全站热榜、领域热榜、被技术社区收录。链接>>>>>>《SpringBoot实战》

文章目录

  • 专栏推荐
  • 🌟什么是消息队列
  • 🌟应用场景
    • 解耦
    • 异步
    • 削峰
  • 🌟劣势分析
  • 🌟写在最后

🌟什么是消息队列

以下解释来源于百度百科:

“消息队列”是在消息的传输过程中保存消息的容器。

个人理解:

消息队列用来应用程序之间的消息传递。

图解:

在这里插入图片描述


🌟应用场景

消息队列作为消息中间件,可以用来解耦、异步、削峰

解耦:生产者和消费者之间通过队列进行通信,降低系统间的耦合性。
异步:生产者发送消息后,仍旧可以执行其他任务,无需等待当前任务的执行状态。
削峰:消费者能力不足以跟上生产者的速度时,消息队列可以缓冲消息。

解耦

举例说明

比如说电商系统中,在下单系统与物流系统中引入消息队列MQ。下单系统将订单消息存入消息队列,物流系统负责监听消息队列得到商品订单消息。


传统模式:物流系统调用下单系统中的订单信息接口,假如下单系统故障则会导致发货失败。
在这里插入图片描述


MQ模式:下单系统无法访问时,物流系统可以监听队列中的订单消息。下单系统生产消息到队列中,仍可以执行其他任务。
在这里插入图片描述


异步

举例说明

比如说系统注册功能中,在用户注册时对用户异步发送注册邮件。


传统模式串行模式:在用户注册时,注册成功后将信息写入数据库,并对用户发送注册成功的邮件。响应总时间为60+70+70=200ms。
在这里插入图片描述


传统模式并行模式:在用户注册时,注册成功将信息写入数据库。发送邮件和发送短信并行执行。响应总时间为60+70=130ms。
在这里插入图片描述


消息队列模式:在用户注册时,注册成功将信息写入数据库。发送邮件和发送短信异步执行发送到消息队列。响应总时间为60+30=90ms。
在这里插入图片描述


削峰

举例说明:

大量用户发送请求,进行秒杀活动时。


传统模式:大量用户请求超过服务器请求负荷。
在这里插入图片描述
消息队列模式:服务器根据相关规则去消息队列读取相关请求。
在这里插入图片描述


🌟劣势分析

虽然上述两个小节对消息队列是什么以及应用场景有哪些?作出了具体解释并加以配图。但是它有什么缺点呢?

  1. 系统复杂性:引入消息队列会使系统更加的复杂,需要考虑各个组件间产生的影响
  2. 消息重复消费、丢失风险:需要保证消息的可靠性投递以及避免消息的重复消费,造成业务出现问题。

🌟写在最后

有关于图解消息队列是什么玩意儿?它的应用场景有哪些?到此就结束了。感谢大家的阅读,希望大家在评论区对此部分内容散发讨论,便于学到更多的知识。


请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/96931.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Apollo学习笔记】——规划模块TASK之SPEED_HEURISTIC_OPTIMIZER

文章目录 前言SPEED_BOUNDS_PRIORI_DECIDER功能简介SPEED_BOUNDS_PRIORI_DECIDER相关配置SPEED_BOUNDS_PRIORI_DECIDER流程1. 对路程和时间进行采样以及速度限制2. 设计状态转移方程(cost计算)2.0 CalculateCostAt代价计算2.1 GetObstacleCost障碍物cost…

yum 、rpm、yumdownloader、repotrack 学习笔记

1 Linux 包管理器概述 rpm的使用: rpm -ivh filename.rpm#这列出该packageName(包名)安装的所有文件列表。 rpm -ql packageName #查询已安装的该packageName的详细信息,包括版本、发布日期等。 rpm -qi packageName #列出该pac…

Locked勒索病毒:最新变种.locked袭击了您的计算机?

导言: 在今天的数字时代,勒索病毒已经不再是仅仅让数据变得不可访问的小威胁。 .locked 勒索病毒,作为其中的一种,以其高度复杂的加密算法和迅速变化的攻击手法而备受恶意分子喜爱。本文91数据恢复将带您深入了解 .locked 勒索病毒…

Redis 缓存穿透击穿和雪崩

一、说明 Redis 缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。但同时,它也带来了一些问题。其中,最要害的问题,就是数据的一致性问题,从严格意义上讲,这个问题无解。如果对…

count(1)与count(*)的区别、ROUND函数

部分问题 1. count(1)与count(*)的区别2. ROUND函数3. SQL19 分组过滤练习题4. Mysql bigdecimal 与 float的区别5. 隐式内连接与显示内连接 (INNER可省略) 1. count(1)与count(*)的区别 COUNT(*)和COUNT(1)有什么区别? count(*)包括了所有…

2024年java面试--多线程(3)

系列文章目录 2024年java面试(一)–spring篇2024年java面试(二)–spring篇2024年java面试(三)–spring篇2024年java面试(四)–spring篇2024年java面试–集合篇2024年java面试–redi…

2022年03月 C/C++(七级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:红与黑 有一间长方形的房子, 地上铺了红色、 黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上, 只能向相邻的黑色瓷砖移动。 请写一个程序, 计算你总共能够到达多少块黑色的瓷砖。 时间限制: 1000 内存限制: 65536 输入…

创建10个线程并发执行(STL/Windows/Linux)

C并发编程入门 目录 STL 写法 #include <thread> #include <iostream> using namespace std;void thread_fun(int arg) {cout << "one STL thread " << arg << " !" << endl; }int main(void) {int thread_count 1…

基于jeecg-boot的flowable流程审批时增加下一个审批人设置

更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbacheng/nbcio-boot 前端代码&#xff1a;https://gitee.com/nbacheng/nbcio-vue.git 在线演示&#xff08;包括H5&#xff09; &#xff1a; http://122.227.135.243:9888 因为有时…

spark支持深度学习批量推理

背景 在数据量较大的业务场景中&#xff0c;spark在数据处理、传统机器学习训练、 深度学习相关业务&#xff0c;能取得较明显的效率提升。 本篇围绕spark大数据背景下的推理&#xff0c;介绍一些优雅的使用方式。 spark适用场景 大数据量自定义方法处理、类sql处理传统机器…

【Linux】简单的小程序:进度条

在学习进度条之前&#xff0c;需要学一点预备知识。 1. 预备知识 回车换行 现在的换行符&#xff08;\n&#xff09;其实就是回车式换行符&#xff0c;另起一行&#xff0c;光标指向最新一行的开头。回车符&#xff08;\r&#xff09;是光标指向这一行的开头。 缓冲区 &a…

【通用消息通知服务】0x3 - 发送我们第一条消息(Websocket)

【通用消息通知服务】0x3 - 发送我们第一条消息 项目地址: A generic message notification system[Github] 实现接收/发送Websocket消息 Websocket Connection Pool import asyncio from asyncio.queues import Queue from asyncio.queues import QueueEmpty from contextli…