Apache kafka 使用自动提交时的消费者再平衡
我们正在使用具有以下配置的消费者卡夫卡客户端0.10.2.0:Apache kafka 使用自动提交时的消费者再平衡,apache-kafka,kafka-consumer-api,rebalancing,Apache Kafka,Kafka Consumer Api,Rebalancing,我们正在使用具有以下配置的消费者卡夫卡客户端0.10.2.0: props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, "true"); props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest"); props.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, "1000"); props.put(C
props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, "true");
props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
props.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, "1000");
props.put(ConsumerConfig.RECEIVE_BUFFER_CONFIG, 64 * 1024);
props.put(ConsumerConfig.MAX_PARTITION_FETCH_BYTES_CONFIG, 16 * 1024);
props.put(ConsumerConfig.PARTITION_ASSIGNMENT_STRATEGY_CONFIG, RoundRobinAssignor.class.getName());
props.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, "30000");
props.put(ConsumerConfig.REQUEST_TIMEOUT_MS_CONFIG, "40000");
props.put(ConsumerConfig.HEARTBEAT_INTERVAL_MS_CONFIG, "10000");
props.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, "100");
如你所见,我们正在使用自动提交。
我们正在使用的消费者API版本有一个专门的线程来执行自动提交。
所以每一秒我们都有一个自动提交,这意味着我们每一秒都有一个心跳
我们的应用程序处理时间实际上可能(有时)超过40秒(请求超时间隔)
我想问的是:
1-处理时间是否需要,例如,一分钟。尽管每秒都会有自动提交的heartbean,但会有一个重新平衡吗
2-更奇怪的是,在执行时间较长的情况下,我们似乎多次收到相同的消息。这正常吗?如果消费者已经提交了补偿,为什么重新平衡会使相同的补偿再次使用
谢谢,
Orel只是澄清一下,在每次轮询中都会调用自动提交检查,它会检查经过的时间是否大于配置的时间,如果是,则只执行提交 例如,如果提交间隔为5秒,而轮询在7秒内发生,那么在这种情况下,提交将在7秒后发生 谢谢你的提问
从Kafka v0.10.1.0开始,您不需要手动触发自动提交来进行心跳。卡夫卡消费品本身为背景中的心跳机制开创了一条新的线索。要了解更多,请阅读
在您的情况下,您可以将
max.poll.interval.ms
设置为处理器处理max.poll.record
记录所用的最长时间。您可以使用KafkaConsumer.pause()
/KafkaConsumer.resume()
来防止消费者在长时间的处理暂停期间重新平衡。看看这个问题
关于第2条。您确定这些补偿已承诺吗?谢谢您的回复,John!实际上,我们使用的是Kafka客户端0.10.2.0,它有一个用于自动提交的专用线程。因此,我们的自动提交间隔设置为1秒,实际上我们在日志中看到“完成自动提交偏移{ 2=OffStand和元数据{Office=2214,元数据='}}为组……”每一秒钟关于心跳点,我知道提交被认为是心跳,所以我认为自动提交将考虑SAMANANKS,我们已经在使用客户端0.10.2.0,它具有以下特性!我们要试试看!