consumer.close()是否手动管理提交偏移量?

3zwjbxry  于 2021-06-04  发布在  Kafka
关注(0)|答案(0)|浏览(259)

直截了当:
对于合流平台kafka消费者(特别是.net客户端,如果有关系的话)。。。
有人能解释一下 Consumer.Close() 在这种情况下 enable.auto.commit = false ?
对感兴趣的人有一些额外的背景:
我们有一个应用程序正在读取来自kafka主题的消息,以便处理报告。
使用包含报表参数的消息
执行报表查询
发送报告结果
如果成功,手动提交报告的偏移量。
任何失败都不会提交偏移量并重试报告或以其他方式管理报告。
除了实现消费者的团队成员创建了如下方法外,这一切都非常简单:

public void Stop(bool graceful)
    {
        if (graceful) // commit offsets in the event of graceful shutdown
        {
            _consumer.Close();
        }
        else
        {
            _consumer.Unassign();
            _consumer.Unsubscribe();
        }
        _consumer.Dispose();
    }

我关心和质疑的是我的团队成员的前提 _consumer.Close(); 将始终提交上述代码中任何已使用消息的所有未完成偏移量。
查看 Close() 方法(在visualstudio和confluent java客户端文档中反编译)我确实看到这两种方法都这么说 Close() 将提交偏移量。。。但它并没有指定是否在所有情况下都这样做,只针对自动提交的偏移量或其他情况。
也许我读得太多了,但是如果客户机被专门配置为通过将配置设置为 enable.auto.commit = false 在我看来,在任何点或任何原因自动提交偏移量都是一种违规行为。
提前谢谢你的帮助。
edited最初为自动提交偏移指定了错误的配置值 auto.offset.reset 而不是 enable.auto.commit .

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题