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