получить идентификаторы задач из kafka connect API для печати в логах - PullRequest
0 голосов
/ 02 июля 2018

У меня есть код приемника kafka connect, для которого ниже json передается как команда curl для регистрации задач.

Пожалуйста, дайте мне знать, если кто-нибудь знает, как получить идентификаторы задач моего соединения. Например, в приведенном ниже примере, мы определили макс задач 3, поэтому мне нужно знать имя 3 задач для журналов, т.е. мне нужно знать, какая строка моего журнала принадлежит какой задаче.

В следующем примере я знаю, что у меня есть 3 задачи - TestCheck-1, TestCheck-2 и TestCheck-3 на основе журналов подключения kafka. Я хочу знать, как получить имена задач, чтобы я мог распечатать их в строках журнала подключения kafka.

{
        "name": "TestCheck",
        "config": {
                "topics": "topic1",
                "connector.class": "ApplicationSinkTask Class package",
                "tasks.max": "3",
                "key.converter": "org.apache.kafka.connect.storage.StringConverter",
                "value.converter": "org.apache.kafka.connect.storage.StringConverter",
                "connector.url": "jdbc connection url",
                "driver.name": "com.microsoft.sqlserver.jdbc.SQLServerDriver",
                "username": "myusername",
                "password": "mypassword",
                "table.name": "test_table",
                "database.name": "test",
        }
}

Когда я зарегистрируюсь, я получу ниже детали.

curl -X POST -H "Content-Type: application/json" --data @myjson.json http://service:8082/connectors

{"name":"TestCheck","config":{"topics":"topic1","connector.class":"ApplicationSinkTask Class package","tasks.max":"3","key.converter":"org.apache.kafka.connect.storage.StringConverter","value.converter":"org.apache.kafka.connect.storage.StringConverter","connector.url":"jdbc:sqlserver://datahubprod.database.windows.net:1433;","driver.name":"jdbc connection url","username":"myuser","password":"mypassword","table.name":"test_table","database.name":"test","name":"TestCheck"},"tasks":[{"connector":"TestCheck","task":0},{"connector":"TestCheck","task":1},{"connector":"TestCheck","task":2}],"type":null}

1 Ответ

0 голосов
/ 14 августа 2018

Управлять соединителями можно с помощью Kafka Connect Rest API. Есть целая куча команд, которые вы можете найти здесь

Пример, приведенный в приведенной выше ссылке, показывает, что вы можете получить все задачи для данного соединителя с помощью команды

$ curl localhost:8083/connectors/local-file-sink/tasks
[
  {
    "id": {
      "connector": "local-file-sink",
      "task": 0
    },
    "config": {
      "task.class": "org.apache.kafka.connect.file.FileStreamSinkTask",
      "topics": "connect-test",
      "file": "test.sink.txt"
    }
  }
]

Вы можете использовать язык по вашему выбору, чтобы отправить команду curl и импортировать ответ json в переменную / словарь для дальнейшего использования, такого как печать в журнал. Вот очень простой пример использования Python, который присваивает переменную весь вывод.

import requests
import json

connectors = 'http://localhost:8083/connectors'
p = requests.get(connectors)
data = p.json()

Если вы анализируете переменную data в словаре, вы можете получить доступ к каждому элементу, то есть task id

Надеюсь, это поможет!

...