消费者的属性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)节点(条目)是否为fetchSize最大大小?
5)是否可以为每个主题设置fetchSize?或者它只是消费者财产?
谢谢。
答案 0 :(得分:0)
1 - 不,消费者流量大小不会改变主题数量, 流数量将保持与您在消费者开始时定义的数量相等。
2 - 是的
3 - 每个“消息”都是获取定义的最大大小(fetchSize)的块,它可能只包含单个主题的单个分区的消息。
所以它看起来像: [T1-P1] [T1-P2] [T2-P1] ... [肌钙蛋白PK]
分区之间没有顺序,但1分区的所有消息总是按顺序排列
它可以达到fetchSize大小,但可能不会。
没有