Kafka 流队列 - 配置消费者 属性 queuedchunks.max

Kafka stream queue - configure consumer property queuedchunks.max

消费者的 属性 queuedchunks.max 含义有点模糊。

我明白了,消费者中的每个流都有一个定义了容量的队列 (queuedchunks.max)。

1) 但是,如果我的消费者开始使用更多主题(在单个流中),这是否会影响该队列能够容纳的对象的最大大小。

例如: 如果我设置fetchSize = 1000,并且queuedchunks.max = 10,是否意味着无论我消耗多少主题,内存中的队列永远不会大于1000*10?

2) 这个队列是在将消息闪存到磁盘之前以异步方式为我的消费者收集消息的有效方法吗?磁盘 IO 通常很慢,所以在队列中收集消息会比尝试立即将它们写入磁盘更好吗?

3) 如果我从 N 个主题中消费消息,该队列中的消息如何排序?

每个队列节点(条目)仅保留 1(单个)主题的消息:

[T1]、[T2]、[T3]、[T1]、[T2]..?

或者有可能每个节点保留不同主题的消息?

[T1, T2], [T3, T1, T2]..?

4) node(entry) 是否为 fetchSize 最大大小?

5) 是否可以为每个主题设置 fetchSize?或者它仅标识消费者 属性?

谢谢。

1 - 不,消费者流大小不会因主题数量而改变, 流数量将保持等于您在消费者开始时定义的数量。

2 - 是

3 - 每个 "message" 都是获取定义的最大大小 (fetchSize) 的块,它可能只包含单个主题的单个分区的消息。

所以它看起来像: [T1-P1][T1-P2][T2-P1]...[Tn-Pk]

分区之间没有顺序,但是1个分区的所有消息总是按顺序出现

  1. 它可能会达到 fetchSize 大小,但也可能不会。

  2. 没有