rocketmq的架构原理:https://www.cnblogs.com/qdhxhz/p/11094624.html
rocketmq的入门使用:https://blog.csdn.net/Linging_24/article/details/120659175?spm=1001.2014.3001.5501
rocketmq的面试题:https://www.cnblogs.com/javazhiyin/p/13327925.html
-
消息队列的优缺点,以及使用场景?
-
如何保证消息不被重复消费?
由于网络波动的原因,无法保证生产消息和消费消息时的重复,所以只能保证消息的幂等性。
-
如何保证消息不丢失
broker默认是异步刷盘。 -
如何让RocketMQ保证消息的顺序消费?
将消息发送到同一个topic的同一个Queue中,然后消费从这个topic的queue中去拿消息消费。 -
如何保证消息发送到同一个queue中?
rocketmq给我们提供了一个接口MessageQueueSelector,可以实现相同规则的消息发送到同一个queue中。 -
RocketMQ消费模式有几种?
消费模型由Consumer决定,消费维度为Topic。
集群消费
1.一条消息只会被同Group中的一个Consumer消费
2.多个Group同时消费一个Topic时,每个Group都会有一个Consumer消费到数据广播消费
消息将对一 个Consumer Group 下的各个 Consumer 实例都消费一遍。即即使这些 Consumer 属于同一个Consumer Group ,消息也会被 Consumer Group 中的每个 Consumer 都消费一次。 -
消费消息是push还是pull?
RocketMQ没有真正意义的push,都是pull,虽然有push类,但实际底层实现采用的是长轮询机制,即拉取方式。 -
什么是死信队列?什么是延时队列?
1.死信队列:当消息消费失败,会进入重试队列,进行重试消费,当重试次数达到一定时,消息还是消费失败,就会进入死信队列,用于存放没有被消费的消息。
2.延时队列:用来存放需要在指定时间被处理的元素的队列,通常可以用来处理一些具有过期性操作的业务,比如十分钟未处理则取消订单。 -
rocketmq的事务消息原理
- 生产者发送消息到MQ中,并标识为半消息,存储在半消息队列中,该队列对业务透明,不会被消费者消费到。
- broker接收到消息并回调执行本地事务中的内容,本地事务执行之后会返回事务的状态(成功、回滚、未知)其中的一种。
- 返回成功:即本地事务执行成功,MQ将半消息队列中的消息移入真正的会被消费者消费的队列中。由消费者进行消费。
- 返回回滚:即本地事务执行失败,MQ会删除半消息队列中的消息。
- 返回未知:即本地事务执行的状态为未知,此时MQ会进行消息回查,回查的逻辑由自己实现,来判断本地事务是否执行成功。 事务回查的时间间隔为1分钟,每隔1分钟进行一次回查,最大回查次数为15次,达到最大次数消息会被丢弃。
-
MQ的选型有哪些?及特点?
https://www.cnblogs.com/stone531/p/10519279.html -
rocketmq的消息重试
https://blog.csdn.net/weixin_34452850/article/details/82746852



