MQ面试题及答案(99%面试官必考11题)

MQ面试题及答案(99%面试官必考11题)-mikechen

Java面试经常会考察MQ面试题,下面给家总结了一份非常全面的MQ面试题及答案详解,希望对大家面试通关有所帮助。

什么是MQ?

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

如下图所示:

MQ面试题及答案(99%面试官必考11题)-mikechen

 

有哪些常见的MQ软件?

常见的MQ消息队列有:Apache Kafka、RabbitMQ、RocketMQ、Pulsar、ActiveMQ等。

 

消息队列MQ整体架构?

MQ整体架构,如下图所示:

MQ面试题及答案(99%面试官必考11题)-mikechen

MQ一般都会涉及三类角色:

1.Producer 消息生产者

Producer:就是负责产生消息,然后发送消息到 Broker(消息处理中心)。

2.Broker 消息处理中心

Broker:也就是消息处理中心,负责消息存储、确认、重试等。

3.Consumer 消息消费者

Consumer:负责从 Broker 中获取消息,并进行相应处理。

 

MQ的优点是什么?

MQ具有以下优点:

  • 异步通信:发送方可以立即返回,而不必等待接收方的响应,从而提高了应用程序的性能和吞吐量。
  • 解耦:发送方和接收方可以独立工作,从而实现了应用程序之间的解耦。
  • 可靠性:MQ可以提供消息的可靠传递和持久化存储,从而确保消息不会丢失。
  • 扩展性:MQ可以水平扩展,从而满足不断增长的消息处理需求。

 

消息队列MQ应用场景

消息队列的应用场景,如下图所示:

MQ面试题及答案(99%面试官必考11题)-mikechen

可以用于应用解耦、异步通信、削峰填谷、日志收集,比如:比如Kafka的应用,解决大量日志传输的问题。

 

什么是点对点模型?

MQ面试题及答案(99%面试官必考11题)-mikechen

点对点模用于 消息生产者 和 消息消费者 之间 点到点 的通信,每个消息只有一个消费者(Consumer),即一旦被消费,消息就不再在消息队列中。

 

什么是发布订阅消息模型?

发布订阅模式,如下图所示:

MQ面试题及答案(99%面试官必考11题)-mikechen

发布订阅模型包含:主题(Topic)、发布者(Publisher)、订阅者(Subscriber)三个角色。

发布订阅模型,和点对点方式不同,发布消息可以被所有订阅者消费。

 

RabbitMQ和Kafka有什么区别?

RabbitMQ和Kafka都是常见的MQ软件,它们之间的主要区别包括:

  • 架构:RabbitMQ采用AMQP协议,支持多个消费者消费同一个队列,Kafka采用发布-订阅模型,支持多个消费者消费同一个主题。
  • 性能:Kafka在处理大量数据时具有很高的性能,而RabbitMQ在处理大量数据时可能会出现性能问题。
  • 可靠性:RabbitMQ具有较高的可靠性,可以确保消息不会丢失,Kafka则更注重性能,可以通过调整参数来平衡可靠性和性能。

 

什么是消息的ACK机制?

ACK,即消息的Ackownledge确认机制,是为了保证消息不丢失。

当Consumer确认消息已经被消费处理,发送一个ACK给消息队列,此时消息队列便可以删除这个消息了。

 

如何保证MQ的消息传递可靠性?

可以采用以下策略来保证MQ的消息传递可靠性:

  • 消息持久化:将消息存储到磁盘中,以确保消息不会丢失;
  • 消费者确认:消费者在消费完消息后发送确认消息,以确保消息已被正确消费;
  • 重试机制:当消息发送失败时,可以通过重试机制重新发送消息;
  • 监控和报警:通过监控和报警系统及时发现问题并进行处理。

 

如何处理MQ中的重复消息?

可以采用以下策略来处理MQ中的重复消息:

  • 去重:在发送消息前对消息进行去重,以确保相同内容的消息不会重复发送;
  • 消息去重标识:在消息中添加去重标识,以便在接收到重复消息时进行去重;
  • 幂等性:在接收消息时,通过幂等性设计,确保同样的消息被重复消费时产生的影响是相同的。

 

以上就是常见的MQ面试题及答案,更多的Java面试题及答案,请查看:1000+Java面试题及答案详解

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法