首页 > 解决方案 > 代理日志中有关混合偏移提交类型的警告

问题描述

我们有处理器通过生产者提交补偿以实现一次性交付。

最近我注意到所有偏移量都是偶数(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)

我们如何执行一次精确的操作有什么问题吗?这真的会带来惊喜吗?

标签: apache-kafkakafka-consumer-apikafka-producer-api

解决方案


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

提交(或中止)时,控制批次被写入分区并采用偏移量。该控制记录对客户是不可见的,但经纪人使用它来划定交易并找到它们的最终状态。

基本上,您的记录采用偶数偏移量,并且对于每个记录,都有一个提交控制批次采用下一个偏移量。

现在关于日志中的警告:

如果有一个事务性生产者和一个消费者都为同一个组提交偏移量,你就会得到这个。您应该确保只有事务生产者提交偏移量,以便它们成为您的事务的一部分,并且记录被处理一次。


推荐阅读