使用场景

1、异步处理

用户注册后,需要发注册邮件和注册短信,传统的做法有两种1.串行的方式;2.并行的方式

(1)串行处理方式:注册信息写数据库-发送注册邮件-发送注册短信,等上述三个操作都执行完成之后给客户端发送注册操作反馈,这其中发送邮件、短信一般都是不需要立刻执行,也就是说这两个操作等待的时间对用户来说其实不是必须的。

(2)并行处理方式:注册信息写数据库-发送邮件和注册信息。

消息队列的引入:注册操作将注册信息写入数据库,同时将需要发送到邮箱和短信的信息组合发送到队列中(假设邮件队列和短信队列),执行到这里服务端就可以给客户端的注册操作进行反馈,大大缩短了等待时间。最后再写一个服务去处理队列中的数据。

2、应用解耦

假设一个电商网站有订单系统和库存系统模块,当订单系统中有数据写入时,正常情况下是马上去调用库存系统对商品相应的库存数据进行处理,这样做会存在如下问题:

1、当库存系统挂掉之后,订单就会失效(假设不存在其他处理方法),这对于老板来说是不能容忍的经济损失。

消息队列的引入:订单数据写入队列(假设订单队列)返回下单成功,再写一个服务去处理队列中的数据。

3、流量控制

加入淘宝双十一,有个"秒杀"活动,而秒杀名额有限,正常来讲参与秒杀的用户数量会远远大于最终秒杀成功的用户数,故在秒杀那刻请求了突然暴增,如果超过系统处理上限,势必会影响系统的正常运行。

消息队列的引入:将参与秒杀的用户请求数据写入队列(假设秒杀队列),系统设置允许成功秒杀用户阈值,再对应的去处理队列中的秒杀请求数据。

最新文章

  1. Delphi编程时候诡异地出现ORA-00937错误,记录解决它的思路和方法
  2. Objective-C Mojo和Django 对接
  3. GPIO口及中断API函数【转】
  4. AC自动机最好讲解
  5. andriod增、删、改、查
  6. Oracle索引(B*tree和Bitmap)学习
  7. 阿里云:linux 一键安装web环境
  8. 工作中的 Vim 和 git
  9. [Unity3d]小地图的制作
  10. C++学习笔记(七):函数
  11. 基于visual Studio2013解决算法导论之028散列表开放寻址
  12. JavaScript DOM编程艺术-学习笔记(第七章)
  13. HDU 2489 Minimal Ratio Tree 最小生成树+DFS
  14. mybatis系列笔记(2)---mapper代理方法
  15. 初学Python之 安装包的抉择~~
  16. Thinkphp导入外部类的方法
  17. 如何在MAC上安装SSHFS
  18. 递归实现列出当前工程下所有.Java文件
  19. Canvas入门到高级详解(上)
  20. Deep Reinforcement Learning: Pong from Pixels

热门文章

  1. 记录一次因为硬盘写满造成的redis无法连接
  2. Mysql的二进制安装和基础入门操作
  3. Java 对象复制
  4. 【转载】基于VoiceOver的移动web站无障碍访问实战
  5. win10 uwp 如何让WebView标识win10手机
  6. Linux系统Shell脚本编程
  7. 前后端分离跨服务器文件上传-Java SpringMVC版
  8. C#与lua相互调用
  9. 在你的网站实现qq登陆(php)
  10. <script src="xxx.php"></script>