3

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

例如,如果 readQueueNum 设置为 8 并且 writeQueueNum 设置为 16,则有一半的消息根本没有被处理。

我试图在代码中找出这种设计的基本原理,但还没有找到任何线索。有人可以帮忙解释一下吗?谢谢

4

2 回答 2

3

如果一个主题的消息太多,你需要增加队列,保持服务不丢失任何消息,你会怎么做?减少队列是一样的吗?

RocketMQ给了我们一些方法,我们以你的情况为例,将队列增加到8个:

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

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

于 2019-11-02T10:25:12.017 回答
0

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

于 2021-04-29T03:26:44.677 回答