Может ли kafka подключаться к межбазе с помощью JDBC-коннектора interclient.jar с использованием конфлюэнтной платформы

Возможно ли для kafka подключиться к базе данных interbase с помощью interclient.jar. Я не могу подключить его в системе ubundu, даже после того, как поместил его в нужную папку.
Это моя команда POST для создания соединителя.

 curl -X POST -H "Content-Type: application/json"  --data "{ \"name\": \"ib_connector\",\"config\": { \"connector.class\": \"io.confluent.connect.jdbc.JdbcSourceConnector\", \"tasks.max\": 1,\"connection.url\": \"jdbc:interbase://remoteip:3050/TEST2.gdb?user=SYSDBA&password=masterkey\",\"mode\": \"timestamp+incrementing\", \"incrementing.column.name\": \"id\",\"timestamp.column.name\": \"modified\", \"topic.prefix\": \"test-interbase-\", \"poll.interval.ms\": 1000 } }" http://localhost:8083/connectors. 

Я поместил файл коннектора JDBC interclient.jar в /usr/share/java/kafka-connect-jdbc.

В docker-compose.yml путь к плагину указан как CONNECT_PLUGIN_PATH:'/usr/share/java,/etc/kafka-connect/jars'.

У меня также есть файл .env, в котором KAFKA_CONNECT_JARS_PATH=/usr/share/java/kafka-connect-jdbc/ и CLASS_PATH=usr/share/java/kafka-connect-jdbc/.

Сообщение об ошибке, которое я получаю, выглядит следующим образом.

{"error_code":400,"message":"Connector configuration is invalid and contains the following 2 error(s):\nInvalid value java.sql.SQLException: No suitable driver found for jdbc:interbase://remoteip:3050/TEST2?user=SYSDBA&password=masterkey for configuration Couldn't open connection to jdbc:interbase://remoteip:3050/TEST2?user=SYSDBA&password=masterkey\nInvalid value java.sql.SQLException: No suitable driver found for jdbc:interbase://remoteip:3050/TEST2?user=SYSDBA&password=masterkey

person Bommu    schedule 12.12.2018    source источник
comment
Можете ли вы предоставить более подробную информацию - я не могу подключиться, предположительно это означает, что вы получаете сообщение об ошибке?   -  person Robin Moffatt    schedule 12.12.2018
comment
@RobinMoffatt Я обновил вопрос.   -  person Bommu    schedule 12.12.2018


Ответы (1)


Если вы используете Docker, то размещение JAR-файла в вашей локальной файловой системе в /usr/share/java не заставит Docker подобрать его без сопоставления томов. Чтобы избежать путаницы, я бы посоветовал переместить файлы хоста в другое место.

KAFKA_CONNECT_JARS_PATH также ничего не значит для образа Confluent Docker.

Создайте другой локальный каталог локально. Поместите туда свой JDBC JAR, затем добавьте том в файл Compose, чтобы указать на расположение подключения JDBC в контейнере.

volumes:
  - /path/to/your_folder:/usr/share/java/kafka-connect-jdbc/lib:ro

Где ls /path/to/your_folder показывает драйвер JDBC, который вы хотите использовать, и если у вас установлена ​​Java, вы можете запустить jar -tf /path/to/your_folder/example.jar, чтобы убедиться, что класс драйвера JDBC пытается загрузиться в этот файл.

Эта настройка работала в моем репозитории когда я попробовал драйвер MSSQL JDBC

person OneCricketeer    schedule 12.12.2018
comment
Я добавил тома следующим образом и поместил файл `.jar` в локальный каталог. Затем удалил KAFKA_CONNECT_JARS_PATH из .env file. тома: - ${KAFKA_CONNECT_JARS_PATH}:/home/user/kafka/interclient - /home/user/kafka/interclient:/usr/share/java/kafka-connect-jdbc/ . Все равно не могу подключиться. Я делаю что-то не так. Пожалуйста помоги - person Bommu; 13.12.2018
comment
Обратите внимание, что в моем ответе я поставил /lib:ro в конце и поэтому не перезаписываю всю папку /usr/share/java/kafka-connect-jdbc. - person OneCricketeer; 13.12.2018
comment
Да, я сделал то же самое. Я добавил /lib:ro в конце. Я не могу правильно отредактировать комментарий. Извини за это - person Bommu; 13.12.2018
comment
Если он по-прежнему говорит No suitable driver, я не уверен. Если вы получаете ошибку подключения, то это отдельная проблема, и файл JAR по этому пути работал нормально. - person OneCricketeer; 13.12.2018
comment
И если вы удалили KAFKA_CONNECT_JARS_PATH из файла .env. тогда вы не сможете использовать ${KAFKA_CONNECT_JARS_PATH} в Compose... - person OneCricketeer; 13.12.2018
comment
Я добавил KAFKA_CONNECT_JARS_PATH в композицию, а также .env в файл. Тем не менее это не работает. - person Bommu; 13.12.2018
comment
Вам не нужна эта переменная. Начните с простого и удалите его. И поэтому ${KAFKA_CONNECT_JARS_PATH}:/home/user/kafka/interclient не обязательно должен быть в YAML - person OneCricketeer; 13.12.2018
comment
Я удалил ${KAFKA_CONNECT_JARS_PATH}:/home/user/kafka/interclient из .yml файла, а .env файл имеет CONFLUENT_VERSION=5.0.1 KAFKA_CONNECT_JARS_PATH=/home/user/kafka/interclient/ KAFKA_MANAGER_VERSION=latestELK_VERSION=6.5.1 параметров. Но почтовая команда все еще не работает. :( - person Bommu; 13.12.2018
comment
Я до сих пор не знаю, что все находится внутри папки /home/user/kafka/interclient/ или если вы запускаете в контейнер после перезапуска (поскольку редактирование YAML не сразу меняет монтирование тома) и запускаете ls -lR /usr/share/java/kafka-connect/jdbc, тогда вам нужно будет проверить, действительно ли это там - person OneCricketeer; 13.12.2018
comment
В папке /home/user/kafka/interclient/ есть только файл interclient.jar. Другие плагины находятся в usr/share/java/kafka-connect-jdbc - person Bommu; 13.12.2018
comment
Где взять этот JAR-файл? Я не знаю Interbase, и даже если он работает с Kafka - person OneCricketeer; 13.12.2018
comment
Вы можете получить его здесь ссылка - person Bommu; 13.12.2018
comment
И как мне настроить базу данных interbase на Mac, чтобы проверить, работает ли она без создания учетной записи? - person OneCricketeer; 13.12.2018
comment
Я понятия не имею, как установить его на Mac. Мой докер находится в системе Ubuntu, а Interbase — в удаленной системе. Извини за это :( - person Bommu; 13.12.2018
comment
Ладно, ну, JAR есть в настройках Docker, и я думаю, что jdbc:interbase правильно во всей документации, которую я могу найти, но без этой системы, доступной для тестирования, я боюсь, что не смогу больше помочь - person OneCricketeer; 13.12.2018
comment
Я могу понять. Спасибо за вашу помощь, я попробовал, как вы сказали. Но я думаю, что проблема в другом. Я думаю, что никто не пытался подключить Interbase к kafka. - person Bommu; 13.12.2018