Установка пользовательского конвертера Kafka Connect на разъем репликатора - PullRequest
0 голосов
/ 21 июня 2019

Я ищу совет о том, как установить пользовательский конвертер на узел 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, но не сталкиваются с конфликтами?

...