Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 使用自动提交时的消费者再平衡_Apache Kafka_Kafka Consumer Api_Rebalancing - Fatal编程技术网

Apache kafka 使用自动提交时的消费者再平衡

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

我们正在使用具有以下配置的消费者卡夫卡客户端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(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,它具有以下特性!我们要试试看!