MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通讯方式。 使应用程序通过写和检索出入列队的针对应用程序的数据来通讯,而无需专用连接来链接他们。 消息传递指的是程序之间通过在消息中发送数据进行通讯,而不是通过直接调用彼此来通讯,直接调用通常是用于诸如远程调用技术。
解耦:将消息写入消息队列,需要消息的时候自己从消息队列中订阅,从而原系统不需要做任何更改 异步:将消息写入消息队列,非必要的业务逻辑以异步的方式运行,加快速度 削峰:原系统慢慢的按照数据库能处理的并发量,从消息队列中慢慢拉取消息。在生产中,这个短暂的高峰期压是允许的。
系统可用性降低 系统复杂度增加
1 Broker 消息服务器,作为server提供消息核心服务 2 Producer 消息生产者,业务的发起方,负责生产消息传输给broker, 3 Consumer 消息消费者,业务的处理方,负责从broker获取消息并进行业务逻辑处理 4 Topic 主题,发布订阅模式下的消息统一汇集地,不同生产者向topic发送消息,由MQ服务器分发到不同的订阅者,实现消息的广播 5 Queue 队列,PTP模式下,特定生产者向特定queue发送消息,消费者订阅特定的queue完成指定消息的接收 6 Message 消息体,根据不同通信协议定义的固定格式进行编码的数据包,来封装业务数据,实现消息的传输
点对点:消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息。 消息被消费以后,queue中不再存储,所以消息消费者不可能消费到已经被消费的消息。 Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。 发布订阅:消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。和点对点方式不同,发布到topic的消息会被所有订阅者消费。 queue实现了负载均衡,将producer生产的消息发送到消息队列中,由多个消费者消费。但一个消息只能被一个消费者接受,当没有消费者可用时,这个消息会被保存直到有一个可用的消费者。 topic实现了发布和订阅,当你发布一个消息,所有订阅这个topic的服务都能得到这个消息,所以从1到N个订阅者都能得到一个消息的拷贝。