当我们创建一个消费者组来消费来自生产者的一组记录时,消费者组中的消费者将并行地消费生产的记录,我认为这是默认行为。
有没有办法按顺序消费这些?例如,如果生产者生产了1,2,3,4,5,6,7,8,9,10条记录。
默认情况下,在消费者组中,消费者1可能消耗1,3,5,7,9,消费者2可能消耗2,4,6,8,10。
是否可以改变这种情况,在一个消费者组中,消费者1消费1,2,3,4,5,6,7,8,9,10条记录,消费者2消费1,2,3,4,5,6,7,8,9,10条记录?
我对Kafka很陌生,正在努力学习。在这个学习过程中,尝试了默认的行为,这是按照预期工作。期待了解我们是否可以消费作为单一消费者组的一部分产生的所有记录。
1条答案
按热度按时间qnakjoqk1#
consumer1可能消耗1,3,5,7,9,consumer2可能消耗2,4,6,8,10
只有当主题中有两个分区,并且记录均匀分布时…这不是默认行为(参见StickyPartitioner上的文档)
是否可以改变这种情况,在一个消费者组中,消费者1消费1,2,3,4,5,6,7,8,9,10条记录,消费者2消费1,2,3,4,5,6,7,8,9,10条记录?
不是同一个消费群体,不是。至少不是同一个主题。例如,您可以使用MirrorMaker2,有效地复制主题,从而存储和使用数据两次。
或者,使用assign API而不是subscribe,这样就不会使用组,所有消费者都可以读取所有分配的分区,而无需协调