RabbitMq 有啥用
目录
一、MQ有啥用嘞
1、同步
2、异步
二、MQ的使用场景有哪些嘞。
1、注册操作成功信息的异步发送
2、典型应用-电商系统中的秒杀操作
一、MQ有啥用嘞
如下两个图可以看到同步和异步的区别。
1、同步
2、异步
二、MQ的使用场景有哪些嘞。
1、注册操作成功信息的异步发送
- 场景:
- 注册操作后要给用户发送注册成功的邮件和短信
- 分析:
- 这个过程中用户注册最核心的操作是将用户信息存入数据库中,而发送邮件和短信的操作对于用户而言是允许有稍许延迟的,如果在一个方法中完成这些功能,则用户在页面中要等到这些操作都完成后才能得到注册成功的信息,发短信和邮件可能会耗费比较长的时间,这样用户在页面中得到结果的时间就会变长。
- 解决方案:
- 用户完成数据库写入操作后,直接返回注册成功的信息到前端页面。
- 在返回之间分别创建两条消息,两个不同的消费者方法分别完成短信和邮件的发送。
- 这样的做法相当于把原来的同步做法变成了异步做法。
2、典型应用-电商系统中的秒杀操作
- 秒杀系统或秒杀操作一定是一个基于高并发环境下去完成的
- 用户的核心操作主要是点击“秒杀”按钮后来完成服务器端的一系列操作
- 商品库存量要减1
- 【高并发环境下对于库存数量的操作如果通过MySQL完成,效率会很低,因此考虑使用Redis】
- 【这里要考虑超卖现象,这里会用到“锁”,单机环境使用线程锁,如果是分布式部署,则使用分布式锁】
- 秒杀成功后要自动生成订单信息
- 商品库存量要减1
- 【在高并发环境下,如果有大量订单要生成,服务器压力过大时处理订单信息速度会过慢,可以先告诉用户秒杀成功,订单可以慢慢生成】
RabbitMq 有啥用相关推荐
- RabbitMQ 入门系列(11)— RabbitMQ 常用的工作模式(simple模式、work模式、publish/subscribe模式、routing模式、topic模式)
1. simple 模式 simple 模式是最简单最常用的模式 2. work 模式 work 模式有多个消费者 消息产生者将消息放入队列.生产者系统不需知道哪一个任务执行系统在空闲,直接将任务扔到 ...
- Go 学习笔记(57)— Go 第三方库之 amqp (RabbitMQ 生产者、消费者整个流程)
1. 安装 rabbitmq 的 golang 包 golang 可使用库 github.com/streadway/amqp 操作 rabbitmq .使用下面命令安装 RabbitMQ . go ...
- RabbitMQ 入门系列(4)— RabbitMQ 启动、停止节点和应用程序、用户管理、权限配置
1. 服务器管理 我们使用 "节点" 来指代 RabbitMQ 实例,当我们谈到 RabbitMQ 节点时指的是 RabbitMQ 应用程序和其所在的 Erlang 节点. 1.1 ...
- RabbitMQ 入门系列(3)— 生产者消费者 Python 代码实现
生产者消费者代码示例 上一章节中对消息通信概念做了详细的说明,本章节我们对 RabbitMQ 生产者和消费者代码分别做一示例说明. 1. 生产者代码 #!/usr/bin/env python # c ...
- RabbitMQ 入门系列(2)— 生产者、消费者、信道、代理、队列、交换器、路由键、绑定、交换器
本系列是「RabbitMQ实战:高效部署分布式消息队列」和 「RabbitMQ实战指南」书籍的读书笔记. RabbitMQ 中重要概念 1. 生产者 生产者(producer)创建消息,然后发送到代理 ...
- RabbitMQ 入门系列(1)— Ubuntu 安装 RabbitMQ 及配置
1. RabbitMQ 简介 消息 (Message) 是指在应用间传送的数据.消息可以非常简单,比如只包含文本字符串.JSON等,也可以很复杂,比如内嵌对象. 消息队列中间件(Message Que ...
- RabbitMQ超详细安装教程(Linux)
目录 1.简介 2.下载安装启动RabbitMQ 2.1.下载RabbitMQ 2.2.下载Erlang 2.3.安装Erlang 2.4.安装RabbitMQ 2.5.启动RabbitMQ服务 3. ...
- 第五节 RabbitMQ在C#端的应用-消息收发
原文:第五节 RabbitMQ在C#端的应用-消息收发 版权声明:未经本人同意,不得转载该文章,谢谢 https://blog.csdn.net/phocus1/article/details/873 ...
- RabbitMQ学习笔记一:本地Windows环境安装RabbitMQ Server
一:安装RabbitMQ需要先安装Erlang语言开发包,百度网盘地址:http://pan.baidu.com/s/1jH8S2u6.直接下载地址:http://erlang.org/downloa ...
- RabbitMQ使用及与spring boot整合
1.MQ 消息队列(Message Queue,简称MQ)--应用程序和应用程序之间的通信方法 应用:不同进程Process/线程Thread之间通信 比较流行的中间件: ActiveMQ Rabbi ...
最新文章
- 你不懂的JS学习笔记(作用域和闭包)
- php td内容换行,table单元格内容过多换行显示
- LOJ 2546 「JSOI2018」潜入行动——树形DP
- 音视频技术开发周刊 | 191
- 哪位大兄弟有用 cMake 开发Android ndk的
- 使用YAML创建一个 Kubernetes Depolyment
- http缓存与cdn相关技术
- 磁盘属性显示为RAW的SD卡CF卡U盘和硬盘怎么办?
- 管理故事:无知的小沙弥
- 文件格式大全------转自http://h.shanse8.com/simple/Index.php?t33837.html
- 【自然语言处理】【多模态】OFA:通过简单的sequence-to-sequence学习框架统一架构、任务和模态
- Vue3.0 中的数据侦测
- 人工智能(AI)是如何处理数据的?
- 计算机取证(Windows)FTK+X-Way取证复制
- 【python】脚本编写
- 计算机网络毕业论文搭建服务,网络搭建毕业论文
- Ubuntu 中运行Dropbox
- ☆ C/C++ 十进制转二进制
- 【膜摸摸】网红步进电机驱动A4988和DRV8825的对比和区别及选用实践 for 四轴CNC雕刻/3D打印
- java 中 u表示啥意思_“U”到底是什么意思呢?
热门文章
- vue中src路径的写法
- Nature, Cell都在用的Relia Tech 抗原亲和纯化LYVE1抗体
- 苹果电脑如何用HTML5播放,用HTML5播放IPCamera视频
- 大数据全网最佳学习路线总结,不看肯定后悔
- [Practical.Vim(2012.9)].Drew.Neil.Tip04学习摘要
- matlab 莫比乌斯曲面,『Rhino实例.2』莫比乌斯曲面
- 关于WPS Office安全漏洞情况的通报
- 基于手持技术的中学化学实验教学研究
- 如今银行多open?百信银行百度云AI+Bank金融科技思享会告诉你!
- Leaflet创建,tileLayer,marker,面的绘制