代理日志中关于混合偏移提交类型的警告

时间:2019-01-29 07:35:22

标签: apache-kafka kafka-consumer-api kafka-producer-api

我们有一些处理器通过生产者提交补偿,以实现一次准确的交货。

最近我注意到所有偏移量都是偶数(0,2,4,6,8),并且在代理日志中有以下警告。

[2019-01-24 03:06:24,473] WARN [GroupMetadataManager brokerId=0] group: xxxx-group with leader: 1e9856a9-bce1-4a28-9774-0117382a9751-4d9411d1-36fb-4332-af9b-beb65aedfed1 has received offset commits from consumers as well as transactional producers. Mixing both types of offset commits will generally result in surprises and should be avoided. (kafka.coordinator.group.GroupMetadataManager)

我们一次执行一次到底有什么问题吗?这真的会带来惊喜吗?

1 个答案:

答案 0 :(得分:1)

我猜您正在为每条记录提交一个事务。

在提交(或中止)时,将control batch写入分区,并且需要偏移量。此控制记录对客户不可见,但被经纪人用来定界交易并找到其最终状态。

基本上,您的记录采用偶数偏移量,每个记录都有一个提交控制批处理,它们采用下一个偏移量。

现在有关日志中的警告:

如果有一个交易生产者和一个消费者都为同一个组提交抵消额,您将得到此信息。您应该确保只有交易生产者才提交偏移量,这样它们才是您的交易的一部分,并且记录将被处理一次。