目录
什么是消息队列?
消息队列是在消息的传输过程中保存消息的容器,用于接收消息并以文件的传输的方式存储,一个消息队列可以被一个也可以被多个消费,包含以下3元素:
Producer:消息生产者,负责产生和发送消息到Broker;
Broker:消息处理中心,负责消息存储、确认、重试等,一般其中包含多个Queue;
Consumer:消息消费者,负责从Broker中获取消息,并进行相应处理。
消息队列模式
点对点模式:多个生产者可以向同一个消息队列发送消息,一个具体的消息只能由一个消费者消费。
发布/订阅模式:单个消息可以被多个订阅者并发的获取和处理。
消息队列应用场景
应用解耦:消息队列减少了服务之间的耦合性,不同的服务可以通过消息队列进行通信,而不用关心彼此的实现细节。
异步处理:消息队列本身是异步的,它允许接受者在消息发送很长时间后再取回消息。
流量削峰:当上下游系统处理能力存在差距的时候,利用消息队列做一个通用的“载体”,在下游有能力处理的时候,再进行分发与处理。
日志处理:将消息队列用在日志处理中,例如Kafka的应用,解决大量日志传输的问题。
消息通讯:消息队列一般都内置了高效的通信机制,因此也可以用在消息通讯,比如实现点对点消息队列,或者聊天室等。
消息广播:如果没有消息队列,每当一个新的业务方接入,我们都要接入一次新接口。有了消息队列,我们只需要关心消息是否送达了队列,至于谁希望订阅,是下游的事情,极大地减少了开发和联调的工作量。