Kafka Sink Connector 延迟始终显示 1,即使在处理完所有记录后也是如此

问题描述 投票:0回答:1

我是卡夫卡连接的新手。 我正在使用 Kafka Sink Connector 将数据写入数据湖。连接器将数据写入暂存位置,然后将其移动到目标位置。但是,当它处理主题中的所有数据时,我在 Kafka Manager 中检查滞后,如果主题中没有数据并且它已经处理了所有记录,它总是显示 1。它不会变为 0。 当主题中再次有数据时,滞后会像预期的那样变大,有时在处理记录后它会再次下降到 1。 这是我正在使用的配置:

"config": {
    "tasks.max": "1",
    "topics": "xxx",
    "adls.endpoint": "xxxx",
    "adls.container.name": "xxxx",
    "adls.auth.method": "ClientSecret",
    "adls.tenant.id": "xxxx",
    "adls.client.id": "xxxx",
    "adls.client.secret": "xxxxxxxxx",
    "base.directory": "xxxxxxxxxxxx",
    "rotation.filesize" : "1000000000",
    "rotation.inactivity" : "1800000",
    "rotation.record.count" : "100000",
    "auto.offset.reset":"earliest",
   "commit.rotated.only":false
  } 

我想了解如何将延迟降为零,因为当延迟长时间保持在 1 时,它会为我触发警报。 我没有遇到任何数据一致性问题,而且我收到了所有记录。我想知道在这种情况下应遵循的最佳做法是什么。是否有可能将延迟降为零,或者我应该修改我的警报? 我不知道这个接收器连接器的内部代码实现。我正在使用 JAR 文件。

我正在使用这里的配置:

连接器配置链接

apache-kafka kafka-consumer-api apache-kafka-connect
1个回答
1
投票

根据提供的配置很难准确判断,但这可能是由于 Kafka 事务。有一个已知问题,当使用 Kafka 事务时,消费者滞后永远不会达到 0,因为最后一条消息是提交消息,不会被消费者读取。

Consumer.position() 忽略带有 read_uncommitted 的事务标记

和一个相关的答案

Akhq UI 显示 jdbc 接收器连接器的消费者滞后始终为 1,即使所有消息都已被消耗

我建议将您的警报更改为消费者滞后 > 1 以解决此问题。

© www.soinside.com 2019 - 2024. All rights reserved.