#apache-kafka #confluent-schema-registry #ksqldb
Вопрос:
Я установил в ksqldb-сервере в файле /etc/ksqldb/ksql-server.properties, мой реестр схем, как говорится в документации :
ksql.schema.registry.url=http://myipaddress:8090
но когда я захожу в свой контейнер ksqldb :
docker exec -it ksqldb-cli ksql http://ksqldb-server:8088
и я пытаюсь убежать :
CREATE STREAM tracking WITH (KAFKA_TOPIC='tracking', VALUE_FORMAT='AVRO');
Я получаю ошибку:
Cannot create topic 'tracking' with format AVRO without configuring 'ksql.schema.registry.url'
Я также попытался настроить его следующим образом, даже если это не рекомендуется :
SET 'ksql.schema.registry.url'='http://myipaddress:8090';
но все равно получаю ту же ошибку, не знаю, что я делаю не так.
это мой файл docker-compose:
version: "3.3"
services:
# Kafka/Zookeeper container
divolte-kafka:
image: krisgeus/docker-kafka
restart: always
environment:
ADVERTISED_HOST: divolte-kafka
LOG_RETENTION_HOURS: 1
AUTO_CREATE_TOPICS: "false"
KAFKA_CREATE_TOPICS: tracking:4:1
ADVERTISED_LISTENERS: PLAINTEXT://divolte-kafka:9092,INTERNAL://localhost:9093
LISTENERS: PLAINTEXT://0.0.0.0:9092,INTERNAL://0.0.0.0:9093
SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,INTERNAL:PLAINTEXT
INTER_BROKER: INTERNAL
# Schema Registry
schema-registry:
image: confluentinc/cp-schema-registry:5.5.3
restart: always
depends_on:
- divolte-kafka
ports:
- 8090:8081
environment:
SCHEMA_REGISTRY_HOST_NAME: schema-registry
SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL: divolte-kafka:2181
# ksql server
ksqldb-server:
image: confluentinc/ksqldb-server:0.20.0
restart: always
hostname: ksqldb-server
container_name: ksqldb-server
depends_on:
- divolte-kafka
ports:
- "8088:8088"
environment:
KSQL_LISTENERS: http://0.0.0.0:8088
KSQL_BOOTSTRAP_SERVERS: divolte-kafka:9092
KSQL_KSQL_LOGGING_PROCESSING_STREAM_AUTO_CREATE: "true"
KSQL_KSQL_LOGGING_PROCESSING_TOPIC_AUTO_CREATE: "true"
# ksql cli
ksqldb-cli:
image: confluentinc/ksqldb-cli:0.20.0
restart: always
container_name: ksqldb-cli
depends_on:
- divolte-kafka
- ksqldb-server
entrypoint: /bin/sh
tty: true
Ответ №1:
Я установил ksqldb-сервер в файле /etc/ksqldb/ksql-server.properties
Ну, вы никогда не используете этот файл внутри Docker
Вам нужно добавить переменную для этого
KSQL_KSQL_SCHEMA_REGISTRY_URL: "schema-registry:8081"
Кроме того, вы должны использовать Кафку в реестре, а не в устаревшем Zookeeper, со свойством KSQL_KAFKASTORE_BOOTSTRAP_SERVERS