# 几个名词
- 消息
消息( Message ),在计算机底层,是一种数据传输单位。
- 队列
队列( Queue ),一种数据结构,具有先进先出、有先后顺序的特性。
- 消息队列
消息队列( Message Queue , MQ ),一种**队列结构**的存储中间件,即,它本身是一个存储容器,而内部数据的存放结构是队列。
- 生产者
生产者( Producer ),它生成消息,并将消息存入消息队列中。
- 消费者
消费者( Consumer ),它从消息队列中取出消息,进行处理,处理完成之后,该消息从队列中删除。**有些地方也会叫做订阅者。**
# 联想理解
- 厨师、餐架、服务员
厨师做饭,做好以后放到餐架。
服务员从餐架上拿饭,送到客人手中。
**这里,厨师是生产者、服务员是消费者、餐架是消息队列**
这样有好处:厨师做好饭后,只要放到餐架上,就可以继续做饭(效率高),不用等待服务员过来(服务员可能正在被客人训斥,过不来)
- 下单功能
用户下单之后,后台需要将订单信息入库。
另外,可能还有这些操作:短信提醒、邮件提醒、APP推送、公众号推送…
这些任务,每一件都需要执行网络请求,假定分别耗时 200 ms,而每一个任务,都需要顺序执行。
则,整个下单处理,将有 800 ms 以上耗时,**体验非常不好**。
若,将此结构进行以下优化:
> 订单数据入库成功,将后面的任务,分别放入各自任务的消息队列中,放入成功,立即返回响应,则大大提高响应速度。
另一边,由消费者程序按一定规则从消息队列中得到任务,并一一执行。