Добавление нового конфига раковины в kafka connect - PullRequest
0 голосов
/ 19 марта 2020

Я занят изучением кафки, в частности нижестоящего элемента использования коннектора приемника (jdb c) для отправки данных из топики кафки c в mysql.

, которую я собрал изображение из слитного образа kafka-connect-base с разъемом jdb c и драйвером mysql jdb c в Dockerfile, например:

FROM confluentinc/cp-kafka-connect-base

RUN confluent-hub install --no-prompt confluentinc/kafka-connect-jdbc:5.4.1

ENV MYSQL_DRIVER_VERSION 5.1.39

RUN curl -k -SL "https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-${MYSQL_DRIVER_VERSION}.tar.gz" \
     | tar -xzf - -C /usr/share/java/kafka/ --strip-components=1 mysql-connector-java-5.1.39/mysql-connector-java-${MYSQL_DRIVER_VERSION}-bin.jar

Я буду честен, Я немного заблудился в документации и дошел до того, что я хочу включить конфигурацию для приемника, но я понятия не имею, как включить это или куда скопировать. Я создал файл конфигурации приемника, но не уверен, куда его поместить. Как часть сборки образа или при запуске контейнера kafka-connect?

Конечной игрой для этого является создание развертывания руля для этого соединителя, но я еще не там.

Любая помощь будет принята с благодарностью, поскольку я узнаю все о Kafka и Kafka Connect.

1 Ответ

2 голосов
/ 19 марта 2020

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

Вот пример конфигурации приемника JDB C - вам нужно изменить его так, чтобы он подходил для вашего источника topi c, сериализация , et c:

curl -X PUT http://localhost:8083/connectors/sink_postgres_foo_00/config -H "Content-Type: application/json" -d '{
      "connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
      "connection.url": "jdbc:mysql://mysql-host:3306/",
      "connection.user": "user",
      "connection.password": "pw",
      "value.converter": "org.apache.kafka.connect.json.JsonConverter",
      "value.converter.schemas.enable": "true",
      "tasks.max": "1",
      "topics": "foo",
      "auto.create": "true",
      "auto.evolve":"true",
      "pk.mode":"none"          
    }'

Если вы хотите передать конфигурацию коннектора при создании экземпляра контейнера, вы можете встроить его в команду запуска, которая должна запустить работника, дождаться его доступности и затем передать конфигурацию. Вот пример . Также см. https://rmoff.net/2018/12/15/docker-tips-and-tricks-with-ksql-and-kafka/.

...