readQueue和writeQueue有什么区别

时间:2019-05-12 05:31:34

标签: rocketmq

在RocketMQ中,可以分别设置readQueue的数量和writeQueue的数量,在我看来,只有公共部分才能按预期工作。

例如,如果将readQueueNum设置为8并将writeQueueNum设置为16,则将完全不处理一半消息。

我试图在代码中找出有关此设计的基本原理,但尚未发现任何线索。有人可以帮忙解释一下吗?

2 个答案:

答案 0 :(得分:2)

如果一个主题中的消息太多,则需要增加队列,并使服务继续进行而不会丢失任何消息,该怎么办? 减少队列是一样的吗?

RocketMQ提供了一些方法,让我们以您的情况为例,将队列增加到8:

  • 将读取队列增加到8.。会发生什么?从8队列中读取消息,写入4
  • 将写入队列增加到8。写入4个新队列的消息可以立即读取,对吗?

问题:如果没有读写队列,请直接增加队列,发送到新队列的新消息一定不能立即读取

答案 1 :(得分:0)

它用于优雅地减少队列。想象如何在不丢失消息的情况下减少写入队列。首先你必须减少写队列,然后你可以在消耗旧写队列中的历史消息后减少读队列。