Apache kafka 卡夫卡是否区分消费抵销和承诺抵销?

Apache kafka 卡夫卡是否区分消费抵销和承诺抵销?,apache-kafka,kafka-consumer-api,Apache Kafka,Kafka Consumer Api,据我所知,消费者从特定主题读取消息,消费者客户端将定期提交偏移量 因此,如果由于某种原因,消费者未能发送特定消息,则不会提交该偏移量,然后您可以返回并重新处理该消息 是否有任何东西可以跟踪您刚消耗的偏移量以及随后提交的偏移量 卡夫卡是否区分消费抵销和承诺抵销 是的,有很大的不同。使用的偏移量由使用者管理,使用者将从主题分区中获取后续消息 使用者可以(但不是必须)自动或通过调用提交API提交消息。该信息存储在名为uu consumer_offset的卡夫卡内部主题中,并基于ConsumerGrou

据我所知,消费者从特定主题读取消息,消费者客户端将定期提交偏移量

因此,如果由于某种原因,消费者未能发送特定消息,则不会提交该偏移量,然后您可以返回并重新处理该消息

是否有任何东西可以跟踪您刚消耗的偏移量以及随后提交的偏移量

卡夫卡是否区分消费抵销和承诺抵销

是的,有很大的不同。使用的偏移量由使用者管理,使用者将从主题分区中获取后续消息

使用者可以(但不是必须)自动或通过调用提交API提交消息。该信息存储在名为uu consumer_offset的卡夫卡内部主题中,并基于ConsumerGroup、topic和Partition存储提交的偏移量。如果客户端正在重新启动,或者新的使用者加入/离开ConsumerGroup,则将使用该选项

请记住,如果您的客户端不提交偏移量
n
,但稍后提交偏移量
n+1
,那么对于卡夫卡来说,提交两个偏移量时,情况不会有所不同


编辑:有关已使用和已提交的偏移量的更多详细信息,请参阅KafkaConsumer的JavaDocs,网址为:

Kafka为分区中的每条记录维护一个数字偏移量。该偏移量充当该分区内记录的唯一标识符,还表示使用者在分区中的位置。例如,位于位置5的使用者已使用偏移量为0到4的记录,然后将接收偏移量为5的记录。实际上,与消费者用户相关的位置有两个概念:

消费者的位置给出了下一条记录的偏移量。它将比使用者在该分区中看到的最高偏移量大一个。每次消费者在call to poll(持续时间)中收到消息时,它都会自动前进

提交位置是安全存储的最后一个偏移量。如果进程失败并重新启动,这是使用者将恢复到的偏移量。使用者可以定期自动提交偏移量;或者,它可以选择通过调用一个提交API(例如commitSync和commitSync)手动控制此提交位置

这种区别使消费者能够控制记录被视为已消费的时间。下文将对其进行更详细的讨论