MongoDB Kafka Sink Connector自定义后置处理器类加载失败求助
问题描述
为Kafka MongoDB Sink Connector实现自定义后置处理器时,配置post.processor.chain=yyyy.kafka.mongodb.sink.postprocessor.xml.XMLParserPostProcessor后,出现以下错误:
java.util.concurrent.ExecutionException: org.apache.kafka.connect.runtime.rest.errors.BadRequestException: Connector configuration is invalid and contains the following 1 error(s):
Invalid value [yyyy.kafka.mongodb.sink.postprocessor.xml.XMLParserPostProcessor] for configuration post.processor.chain
You can also find the above list of errors at the endpoint<code>/connector-plugins/{connectorType}/config/validate</code>
at org.apache.kafka.connect.util.ConvertingFutureCallback.result(ConvertingFutureCallback.java:115)
at org.apache.kafka.connect.util.ConvertingFutureCallback.get(ConvertingFutureCallback.java:99)
at org.apache.kafka.connect.cli.ConnectStandalone.main(ConnectStandalone.java:118)
Caused by: org.apache.kafka.connect.runtime.rest.errors.BadRequestException: Connector configuration is invalid and contains the following 1 error(s):
Invalid value [yyyy.kafka.mongodb.sink.postprocessor.xml.XMLParserPostProcessor] for configuration post.processor.chain
You can also find the above list of errors at the endpoint<code>/connector-plugins/{connectorType}/config/validate</code>
可能的解决方法
检查类路径与jar包完整性
确保自定义后置处理器的jar包已放置在Kafka Connect的类路径下:- 优先放在
plugin.path配置指定的目录中(每个Connector应单独放在子目录,避免类冲突) - 解压jar包确认
yyyy/kafka/mongodb/sink/postprocessor/xml/XMLParserPostProcessor.class文件存在,包名、类名完全匹配(Java对大小写敏感,注意类名首字母大写、包名小写的规范)
- 优先放在
确认实现正确的接口
自定义类必须实现MongoDB Sink Connector要求的org.mongodb.kafka.connect.sink.postprocessor.PostProcessor接口,并且提供无参构造函数——Connect会通过反射实例化处理器,缺少无参构造会导致加载失败。验证Connector版本与配置项
确认使用的MongoDB Sink Connector版本支持自定义后置处理器功能(较旧版本可能没有post.processor.chain配置项),同时检查配置项拼写是否完全正确,没有多余空格或符号。用配置验证端点排查细节
调用Connect的配置验证端点(/connector-plugins/MongoDbSinkConnector/config/validate),传入你的配置参数,获取更详细的错误提示——比如是否存在依赖缺失、类加载冲突等深层问题。
内容的提问来源于stack exchange,提问作者Ranga

