什么是消息队列?

几个名词

  • 消息
    消息( Message ),在计算机底层,是一种数据传输单位。
  • 队列
    队列( Queue ),一种数据结构,具有先进先出、有先后顺序的特性。
  • 消息队列
    消息队列( Message Queue , MQ ),一种队列结构的存储中间件,即,它本身是一个存储容器,而内部数据的存放结构是队列。
  • 生产者
    生产者( Producer ),它生成消息,并将消息存入消息队列中。
  • 消费者
    消费者( Consumer ),它从消息队列中取出消息,进行处理,处理完成之后,该消息从队列中删除。有些地方也会叫做订阅者。

    联想理解

  • 厨师、餐架、服务员
    厨师做饭,做好以后放到餐架。
    服务员从餐架上拿饭,送到客人手中。
    这里,厨师是生产者、服务员是消费者、餐架是消息队列
    这样有好处:厨师做好饭后,只要放到餐架上,就可以继续做饭(效率高),不用等待服务员过来(服务员可能正在被客人训斥,过不来)

  • 下单功能
    用户下单之后,后台需要将订单信息入库。
    另外,可能还有这些操作:短信提醒、邮件提醒、APP推送、公众号推送…
    这些任务,每一件都需要执行网络请求,假定分别耗时 200 ms,而每一个任务,都需要顺序执行。
    则,整个下单处理,将有 800 ms 以上耗时,体验非常不好
    若,将此结构进行以下优化:

    订单数据入库成功,将后面的任务,分别放入各自任务的消息队列中,放入成功,立即返回响应,则大大提高响应速度。 另一边,由消费者程序按一定规则从消息队列中得到任务,并一一执行。