首页 > 解决方案 > ksqldb,问题设置模式注册表

问题描述

我已经在 /etc/ksqldb/ksql-server.properties 文件中的 ksqldb-server 中设置了我的模式注册表,正如他们在文档中所说的那样:

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

标签: apache-kafkaconfluent-schema-registryksqldb

解决方案


I have set in ksqldb-server in /etc/ksqldb/ksql-server.properties file

Well, you're never using this file inside Docker

You need to add a variable for it

KSQL_KSQL_SCHEMA_REGISTRY_URL:  "schema-registry:8081"

Also, you should use Kafka on the registry, not deprecated Zookeeper, with property KSQL_KAFKASTORE_BOOTSTRAP_SERVERS


推荐阅读