一、什么是消息队列
消息队列,英文名:Message Queue,经常缩写为MQ。从字面上来理解,消息队列是一种用来存储消息的队列 。来看一下下面的代码
上述代码,创建了一个队列,先往队列中添加了一个消息,然后又从队列中取出了一个消息。这说明了队列是可以用来存取消息的
总结:消息队列指的就是将数据放置到一个队列中, 从队列一端进入, 然后从另一端流出的过程
二、消息队列的应用场景
消息队列在实际应用中包括如下四个场景:
1、应用耦合:
多应用间通过消息队列对同一消息进行处理,避免调用接口失败导致整个过程失败;
2、异步处理:
多应用对消息队列中同一消息进行处理,应用间并发处理消息,相比串行处理,减少处理时间;
3、限流削峰:
广泛应用于秒杀或抢购活动中,避免流量过大导致应用系统挂掉的情况;
4、消息驱动的系统:
系统分为消息队列、消息生产者、消息消费者,生产者负责产生消息,消费者(可能有多个)负责对消息进行处理
下面详细介绍上述四个场景以及消息队列如何在上述四个场景中使用
异步处理
具体场景:用户为了使用某个应用,进行注册,系统需要发送注册邮件并验证短信。
对这两个操作的处理方式有两种:串行及并行。
1) 串行方式: 新注册信息生成后 , 先发送注册邮件, 再发送验证短信
注意 : 在这种方式下,需要最终发送验证短信后再返回给客户端
2) 并行处理:新注册信息写入后,由发短信和发邮件并行处理
注意: 在这种方式下,发短信和发邮件 需处理完成后再返回给客户端。
假设