消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在。
这个其实跟设计模式中的观察者模式有点像,参考文章《设计模式-观察者模式(observer)》。被观察者可以称之为事件对象,有新的事件发布,会被观察者监听到。
1)三个角色:生产者、消费者、消息处理中心
把数据放到消息队列的叫做生产者
从消息队列里边取数据的叫做消费者
消息处理中心指的就是消息队列
2)异步处理模式
生产者将消息发送到一条虚拟的通道(消息队列)上,而无须等待响应。消费者则订阅或是监听该通道,取出消息。两者互不干扰,甚至都不需要同时在线,也就是我们说的松耦合。
3)可靠性
消息要可以保证不丢失、至少被消费一次、有时可能还需要顺序性的保证
消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和流量削峰、降低系统耦合性。
比如订单系统,与其关联的可能就有商品系统、库存系统、收件地址系统,用户系统、短信(邮件/微信)通知系统,日志记录系统等等