Учитывая, что вы говорите,
Kafka connect может фактически передавать нужные данные в базу данных SQL.
Я предполагаю, что вы используете сериализацию Avro дляданные по теме.Правильно настроенный Kafka Connect будет принимать данные Avro и десериализовывать их.
Однако , такие консольные инструменты, как kafka-console-consumer
, kt
, kafkacat
и др., Не поддерживают Avro, и поэтому вы получите кучу странных символов, если будете использовать их длячитать данные из темы, которая закодирована в Avro.
Для чтения данных Avro в командную строку вы можете использовать kafka-avro-console-consumer
:
kafka-avro-console-consumer
--bootstrap-server kafka:29092\
--topic test_topic_avro \
--property schema.registry.url=http://schema-registry:8081
Редактировать: Добавление предложения из @CodeGeas тоже :
В качестве альтернативы, чтение данных с использованием REST Proxy может быть выполнено с помощью следующего:
# Create a consumer for JSON data
curl -X POST -H "Content-Type: application/vnd.kafka.v2+json" \
-H "Accept: application/vnd.kafka.v2+json" \
--data '{"name": "my_consumer_instance", "format": "avro", "auto.offset.reset": "earliest"}' \
# Subscribe the consumer to a topic
http://kafka-rest-instance:8082/consumers/my_json_consumer
curl -X POST -H "Content-Type: application/vnd.kafka.v2+json" \
--data '{"topics":["YOUR-TOPIC-NAME"]}' \
http://kafka-rest-instance:8082/consumers/my_json_consumer/instances/my_consumer_instance/subscription
# Then consume some data from a topic using the base URL in the first response.
curl -X GET -H "Accept: application/vnd.kafka.avro.v2+json" \
http://kafka-rest-instance:8082/consumers/my_json_consumer/instances/my_consumer_instance/records
Позже, чтобы впоследствии удалить потребителя:
curl -X DELETE -H "Accept: application/vnd.kafka.avro.v2+json" \
http://kafka-rest-instance:8082/consumers/my_json_consumer/instances/my_consumer_instance