KafkaConsumer 是否可以提交未分配分区的偏移量。commitSync/commitAsync

Can an offset of an unassigned partition be committed by KafkaConsumer.commitSync/commitAsync

KafkaConsumer.commitSync(Map<TopicPartition, OffsetAndMetadata> offsets)

可以使用上述方法来提交未分配的 TopicPartition 的偏移量吗?

我知道 ConsumerRebalanceListener.onPartitionsRevoked 是在 TopicPartition 重新平衡之前进行最终偏移提交的正确位置。

但是如果我现在提交消费者在其分配列表中没有的分区的偏移量,例如rebalance后丢了,Kafka会怎么处理?

会抛出以下异常:

Exception in thread "main" org.apache.kafka.clients.consumer.CommitFailedException: Offset commit cannot be completed since the consumer is not part of an active group for auto partition assignment; it is likely that the consumer was kicked out of the group.
    at org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.sendOffsetCommitRequest(ConsumerCoordinator.java:1109)
    at org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.commitOffsetsSync(ConsumerCoordinator.java:976)
    at org.apache.kafka.clients.consumer.KafkaConsumer.commitSync(KafkaConsumer.java:1511)
    at org.apache.kafka.clients.consumer.KafkaConsumer.commitSync(KafkaConsumer.java:1459)