zl程序教程

您现在的位置是:首页 >  大数据

当前栏目

面试官问什么是消息队列?常见的消息队列中间件有哪些?RabbitMq ActiveMq Kafka 等

2023-09-27 14:21:00 时间

消息队列(Message Queue,简称MQ),指保存消息的一个容器,本质是个队列。

消息(Message)是指在应用之间传送的数据,消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。

菜鸟回答

队列是指:用队列的方式去发出消息,然后把要传输的数据丢到一个队列里面,用来生产数据的这一端叫生产者,从队列里取出消息的叫消费者。

 

高手回答

关于这个问题我从三个方面解答,第一个是概念MQ,消息队列是一种应用之间异步通信的方式,主要由三部分组成,第一个是生产者,也就是说生产消息的这一端,主要负责消息所承载业务信息的一个实例化,他是整个消息的发起方,中间的broker,也就是代理,他是整个消息的一个服务端,主要处理消息单元,他负责消息的存储,投递,以及一些其他附加功能的实现,他是整个消息队列里面最核心的组成部分。

第三个是消费者,他主要负责消息的消费,根据消息所承载的信息去处理各种业务逻辑。

应用场景主要分为三种:

第一种是异步处理,主要应用在实时性要求不严格的一些场景,比如说用户注册,发送验证码下单通知,发送优惠券等,服务方只需要把协商好的信息发送到消息队列,剩下的是由消费者的消息服务去处理,不需要等待消费者的返回结果就可以直接返回给客户端,返回到业务层面。

第二种是应用解耦,应用解藕可以看做是把一些相关的,但是藕合度不高的一些系统关联起来,比如说订单系统与优惠券积分系统,有关联度,但是没有那么紧密,每个系统之间只需要去把一些约定的消息发送到 MQ,另外的系统直接去消费这个消息就行了,他可以解决各类系统之间,采用不同的一些框架语言来实现,从而大大增加了整个系统的灵活度。

第三个是流量削峰,流量削峰一般是应用在大流量入口的一些短时间内的业务,需求处理不完的一些服务,为了去权衡高可用把大量的一些并行任务发送到 MQ,根据 MQ 存储和分发的功能,平稳的处理后续的一些业务,起到大流量缓冲的一个作用。

目前市面上常见的消息队列中间件有ActiveMq,RabbitMq,kafka,rocketMq。根据业务需求选择合适的中间件,低吞吐量的用 ActiveMq,高吞吐量的用 kafka 和 rocketMq。