消费者的属性queuedchunks.max的含义有点模糊。
我看到,consumer中的每个流都有一个定义了容量的队列(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?或者它只是消费者的财产?
谢谢您。
1条答案
按热度按时间o0lyfsai1#
1-不,用户流大小不会因主题数而改变,流数将保持等于用户开始时定义的值。
2-是
3-每个“消息”都是已定义的最大大小(fetchsize)的获取块,它可能只包含单个主题的单个分区的消息。
所以它看起来像:[t1-p1][t1-p2][t2-p1]…[tn-pk]
分区之间没有顺序,但是一个分区的所有消息总是按顺序出现
它可能达到可获取的大小,但可能不是。
不