什么情况下会发生消息丢失
- 生产者发送消息到block是到MQ的时候
- MQ保存消息到磁盘
- 消费者进行消费消息
- Master保存到Slave
如何保证消息不丢失
- 当生产者发送消息到MQ的时候,我们可以用同步的方式,这样就可以确定是否发送成功。还可以设置重重试机制重试。当重试多次发送,发送失败的话,如果多次都失败的话,那就直接失败,然后保存打印失败信息。
- 消费者端:不使用异步消费机制(使用异步则是有可能本地消费失败,但是服务器返回成功),开启手动提交
如何保证RocketMQ的高可用
| NameServer集群 | |
| Brocker集群 | |
| 使用同步刷盘的模式 |
如何处理RocketMQ的消息堆积
- 队列配置足够多,可以通过新增足够多的消费者来进行消费(最多队列数=消费者)
- 队列配置不足, 对于只有少量的队列,但消费者充足的情况下,我们就要创建一个临时的topic,然后建立足够多的消息队列,把原来的消息指向新的队列里面,然后再创建大量的消费者进行从新的队列里面进行消费。
RocketMQ是如何进行数据存储的
为什么RocketMQ这么快
一是因为使用了文件存储,二使用顺序保存,三使用零拷贝的方式。
如何保证MQ的消息的有序性?
要保证我们的消息发送到同一个队列里面,然后这个队列要用同一个消费者进行消费,这样就可以做到消息的局部有序性。
什么是死性队列?什么情况下才会出用到死性队列?
RocketMQ的请求流程是什么?是怎么样的?
一首先要开启NameServer,二开启Broker,三创建topic、生产者发送消息到MQ,五消费者消费消息。
当消费者消费了100条消息之后,我们发现这100条消息消费错了,然后想重新进行消费,这时应该怎么办?
我们可以登录到rock thankyou的控制台,通过office的参数,然后进行重新设置,然后再就可以让剩下消费者重新进行消费。
- 集群消费支持重置消费位点, 广播模式不支持.
- 消费者不在线不能重置消费位点
RocketMQ服务器有哪些搭建模式?
一单master模式,二多master模式,三多master多share模式。 三多master多seller同步复制模式,四多master多share异步复制模式。
死信队列中的消息如何再次消费
需要动手 1.如何在同一个group下建立多个消费者 2.消息堆积如何处理 3.死信队列的消息如何消费?(需要动手实验)