Я ищу совет о том, как установить пользовательский конвертер на узел kafka-connect, чтобы я мог использовать его с помощью коннектора репликатора.
Что я сделал:
- Внутри confluentinc / schema-registry / avro-converter / я скопировал «AvroConverter» в «AvroConverterLuke» и сделал небольшое сообщение в журнале, которое сообщит мне, что мой пользовательский конвертер подобрался
- Переименован в pom & builtтак получилось: jar "kafka-connect-avro-converter-luke-5.2.1.jar"
- Исходя из этого сообщения SO, Использование пользовательского конвертера с Kafka Connect? ,Я помещаю флягу в confluent-5.2.1 / share / java / kafka-connect-replicator
Когда я запускаю свой репликатор kafka connect, я вижу, что фляга поднята, однако это терпит неудачус
java.lang.LinkageError: loader constraint violation: when resolving field "schemaRegistry" the class loader (instance of org/apache/kafka/connect/runtime/isolation/PluginClassLoader) of the referring class, io/confluent/kafka/serializers/AbstractKafkaAvroSerDe, and the class loader (instance of sun/misc/Launcher$AppClassLoader) for the field's resolved type, io/confluent/kafka/schemaregistry/client/SchemaRegistryClient, have different Class objects for that type
at io.confluent.connect.avro.AvroConverterLuke$Serializer.<init>(AvroConverterLuke.java:117)
at io.confluent.connect.avro.AvroConverterLuke$Serializer.<init>(AvroConverterLuke.java:123)
at io.confluent.connect.avro.AvroConverterLuke.configure(AvroConverterLuke.java:69)
at org.apache.kafka.connect.runtime.isolation.Plugins.newConverter(Plugins.java:263)
at org.apache.kafka.connect.runtime.Worker.startTask(Worker.java:412)
at org.apache.kafka.connect.runtime.standalone.StandaloneHerder.createConnectorTasks(StandaloneHerder.java:307)
at org.apache.kafka.connect.runtime.standalone.StandaloneHerder.updateConnectorTasks(StandaloneHerder.java:332)
at org.apache.kafka.connect.runtime.standalone.StandaloneHerder.putConnectorConfig(StandaloneHerder.java:210)
at org.apache.kafka.connect.cli.ConnectStandalone.main(ConnectStandalone.java:113)
Понятно, что классы, включенные в мой jar-файл, каким-то образом конфликтуют с классами Kafka Connect во время выполнения.
У меня вопрос: как мне упаковать конвертер таким образом, чтобы яможет повторно использовать классы, такие как SchemaRegistryClient, но не сталкиваются с конфликтами?