kafka connect-jdbc接收器sql异常

时间:2019-03-15 04:24:49

标签: java apache-kafka apache-kafka-connect

我正在使用融合社区版进行简单的设置,其中包括调用Kafka rest代理的rest客户端,然后使用提供的jdbc接收器连接器将数据推送到oracle数据库中。

我注意到,如果存在一个sql异常(例如,如果实际数据的长度大于实际数据的长度(定义了列的长度)),则该任务停止,并且如果我重新启动它,则它尝试插入错误的条目也是一样然后停止了它不会插入其他条目。

这不是我可以记录错误条目并让任务继续插入其他数据的方法吗?

2 个答案:

答案 0 :(得分:2)

用于接收器连接器的Kafka Connect框架只能在以下情况下引发异常时跳过有问题的记录:  -转换键或值(Converter:toConnectData(...))  -转换(Transformation::apply

为此,您可以使用errors.tolerance属性:

"errors.tolerance": "all"

还有一些其他属性,用于打印有关错误的详细信息:errors.log.enable,errors.log.include.messages。 原始答案:Apache Kafka JDBC Connector - SerializationException: Unknown magic byte

如果在传递消息期间抛出异常,接收器任务将被杀死。 如果您需要处理与外部系统的通信错误(或其他),则必须向连接器添加支持

Jdbc Connector,当抛出SQLException时可以退休,但不会跳过任何记录

退休人数和他们之间的间隔由以下属性管理

  • max.retries默认值10
  • retry.backoff.ms默认3000

答案 1 :(得分:0)

接收器当前无法忽略不良记录,但是您可以使用kafka-consumer-groups工具手动跳过它们:

kafka-consumer-groups \
    --bootstrap-server kafka:29092 \
    --group connect-sink_postgres_foo_00 \
    --reset-offsets \
    --topic foo \
    --to-offset 2 \
    --execute

有关更多信息,see here