пн go кафка подключить источник - PullRequest
1 голос
/ 22 января 2020

Я использую kafka connect для чтения данных из mon go и записи их в kafka topi c.

Я использую разъем источника mon go kafka.

Я получаю следующую ошибку:

ERROR Stopping after connector error (org.apache.kafka.connect.cli.ConnectStandalone:115)
java.lang.NoClassDefFoundError: com/mongodb/ConnectionString
    at com.mongodb.kafka.connect.source.MongoSourceConfig.createConfigDef(MongoSourceConfig.java:209)
    at com.mongodb.kafka.connect.source.MongoSourceConfig.<clinit>(MongoSourceConfig.java:138)
    at com.mongodb.kafka.connect.MongoSourceConnector.config(MongoSourceConnector.java:56)
    at org.apache.kafka.connect.connector.Connector.validate(Connector.java:129)
    at org.apache.kafka.connect.runtime.AbstractHerder.validateConnectorConfig(AbstractHerder.java:282)
    at org.apache.kafka.connect.runtime.standalone.StandaloneHerder.putConnectorConfig(StandaloneHerder.java:188)
    at org.apache.kafka.connect.cli.ConnectStandalone.main(ConnectStandalone.java:109)
Caused by: java.lang.ClassNotFoundException: com.mongodb.ConnectionString
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
    at org.apache.kafka.connect.runtime.isolation.PluginClassLoader.loadClass(PluginClassLoader.java:104)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 7 more

Кажется, что в банке есть смешные классы. Чтобы получить банку, я использовал два разных метода, но я получаю ту же ошибку. Сначала я использовал загрузку из репозитория maven, а затем клонировал исходный код из репозитория github и сам собираю jar. Я подтолкнул банку к plugins.path. Когда я распаковываю сгенерированный jar и go через calsses, я не могу найти упомянутый класс: com.mongodb.ConnectionString

Я использовал следующие файлы конфигурации

worker.properties:

 rest.port=18083

# Set to a list of filesystem paths separated by commas (,) to enable class loading isolation for plugins
# (connectors, converters, transformations). The list should consist of top level directories that include 
# any combination of: 
# a) directories immediately containing jars with plugins and their dependencies
# b) uber-jars with plugins and their dependencies
# c) directories immediately containing the package directory structure of classes of plugins and their dependencies
# Note: symlinks will be followed to discover dependencies or plugins.
# Examples: 
# plugin.path=/usr/local/share/java,/usr/local/share/kafka/plugins,/opt/connectors,
plugin.path=/usr/share/java/plugins

internal.key.converter=org.apache.kafka.connect.json.JsonConverter
internal.value.converter=org.apache.kafka.connect.json.JsonConverter
internal.key.converter.schemas.enable=false
internal.value.converter.schemas.enable=false
bootstrap.servers=127.0.0.1:9092

mon go -connector.properties:

name=mongo
tasks.max=1
connector.class =com.mongodb.kafka.connect.MongoSourceConnector
database=
collection=alerts
key.converter = org.apache.kafka.connect.storage.StringConverter
value.converter = org.apache.kafka.connect.storage.StringConverter

topic.prefix=someprefix
poll.max.batch.size=1000
poll.await.time.ms=5000

# Change stream options
pipeline=[]
batch.size=0
change.stream.full.document=updateLookup

затем я запустил соединитель с помощью следующей команды:

/usr/local/kafka/bin/connect-standalone.sh worker.properties mongo-connector.properties 

Любая идея, как исправить это

Ответы [ 2 ]

0 голосов
/ 01 марта 2020

Я создаю этот ответ, так как я потратил немного времени, чтобы найти решение, как указано в scalacode, самое простое решение - загрузить банку из слияния, а не с maven.

https://www.confluent.io/hub/mongodb/kafka-connect-mongodb

0 голосов
/ 22 января 2020

Вы должны поместить файл JAR соединителя в plugin.path, который в вашем случае равен /usr/share/java/plugins.

Инструкции уже присутствуют в Документация Confluent :

Плагин Kafka Connect:

uber JAR, содержащий все файлы классов для плагина и его сторонних зависимостей в одном JAR-файле; или каталог в файловой системе, содержащий файлы JAR для плагина и его сторонних зависимостей. Однако плагин никогда не должен содержать библиотек, предоставляемых средой выполнения Kafka Connect.

Kafka Connect находит плагины, используя путь к плагину , который представляет собой разделенный запятыми список каталогов, определенных в рабочая конфигурация Kafka Connect. Чтобы установить плагин, поместите каталог плагина или UAR JAR (или символьную ссылку c, которая разрешает один из них) в каталог, указанный в пути к плагину, или обновите путь к плагину, включив в него абсолютный путь к каталогу, содержащему Плагин.

...