【RocketMQ面试题(23道)】-CSDN博客
------------------------------------------------------------------------------------------------
最好的学习资源在官网:初识RocketMQ | RocketMQ (apache.org)
以下内容来源于官网哦。
基本概念
1. RocketMQ的基础消息模型
2. RocketMQ 扩展后的消息模型
3. 相同的ConsumerGroup下的消费者的负载均衡模式有哪些?
4. RocketMQ的部署模型
5. RocketMQ集群工作流程
生产者
在生产者一章的基本概念包括消息,Tag,Keys,队列和生产者的介绍。
1. RocketMQ 消息构成包括哪些?
- topic,表示要发送的消息的主题。
- body 表示消息的存储内容
- properties 表示消息属性
- transactionId 会在事务消息中使用。
2. Message 可以设置的属性值包括哪些?
3. 什么时候该用 Topic,什么时候该用 Tag?
4. 设置keys的好处?
5. 为什么引入了队列的概念?
为了支持高并发和水平扩展,需要对 Topic 进行分区,在 RocketMQ 中这被称为队列,一个 Topic 可能有多个队列,并且可能分布在不同的 Broker 上。(队列可以提升消息发送和消费的并发度)
6. 生产者
生产者(Producer)就是消息的发送者,Apache RocketMQ 拥有丰富的消息类型,可以支持不同的应用场景,在不同的场景中,需要使用不同的消息进行发送。比如在电商交易中超时未支付关闭订单的场景,在订单创建时会发送一条延时消息。这条消息将会在 30 分钟以后投递给消费者,消费者收到此消息后需要判断对应的订单是否已完成支付。如支付未完成,则关闭订单。如已完成支付则忽略,此时就需要用到延迟消息;电商场景中,业务上要求同一订单的消息保持严格顺序,此时就要用到顺序消息。在日志处理场景中,可以接受的比较大的发送延迟,但对吞吐量的要求很高,希望每秒能处理百万条日志,此时可以使用批量消息。在银行扣款的场景中,要保持上游的扣款操作和下游的短信通知保持一致,此时就要使用事务消息,下一节将会介绍各种类型消息的发送。
需要注意的是,生产环境中不同消息类型需要使用不同的主题,不要在同一个主题内使用多种消息类型,这样可以避免运维过程中的风险和错误。