我正在使用融合社区版进行简单的设置,其中包括调用Kafka rest代理的rest客户端,然后使用提供的jdbc接收器连接器将数据推送到oracle数据库中。
我注意到,如果存在一个sql异常(例如,如果实际数据的长度大于实际数据的长度(定义了列的长度)),则该任务停止,并且如果我重新启动它,则它尝试插入错误的条目也是一样然后停止了它不会插入其他条目。
这不是我可以记录错误条目并让任务继续插入其他数据的方法吗?
答案 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。