RocketMQ

92 阅读3分钟

什么情况下会发生消息丢失

  1. 生产者发送消息到block是到MQ的时候
  2. MQ保存消息到磁盘
  3. 消费者进行消费消息
  4. Master保存到Slave

如何保证消息不丢失

  • 当生产者发送消息到MQ的时候,我们可以用同步的方式,这样就可以确定是否发送成功。还可以设置重重试机制重试。当重试多次发送,发送失败的话,如果多次都失败的话,那就直接失败,然后保存打印失败信息。
  • 消费者端:不使用异步消费机制(使用异步则是有可能本地消费失败,但是服务器返回成功),开启手动提交

如何保证RocketMQ的高可用

NameServer集群
Brocker集群
使用同步刷盘的模式

如何处理RocketMQ的消息堆积

  1. 队列配置足够多,可以通过新增足够多的消费者来进行消费(最多队列数=消费者)
  2. 队列配置不足, 对于只有少量的队列,但消费者充足的情况下,我们就要创建一个临时的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.死信队列的消息如何消费?(需要动手实验)

rocketmq官网