Kafka连接Neo4j时Schema Registry容器启动失败求助
解决Schema Registry启动报错"No supported Kafka endpoints are configured"的方案
检查Kafka服务可达性
确认docker-compose中Kafka的服务名与Schema Registry配置的SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS参数匹配,比如Kafka服务名为kafka,则配置值应为kafka:9092(容器内部通过服务名通信,不能用localhost)。同时查看Kafka容器日志(docker logs <kafka-container-id>),确认Kafka已完成初始化并正常监听端口。修正Schema Registry核心配置
确保Schema Registry的环境变量中正确设置Kafka存储地址,避免参数混淆。正确的配置示例:schema-registry: image: confluentinc/cp-schema-registry:7.4.0 environment: SCHEMA_REGISTRY_HOST_NAME: schema-registry SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: kafka:9092 SCHEMA_REGISTRY_LISTENERS: http://0.0.0.0:8081 depends_on: - kafka注意Confluent Schema Registry使用
SCHEMA_REGISTRY_前缀的参数,不要误用KAFKA_前缀的配置项。优化容器启动顺序
仅靠depends_on无法保证Kafka完全就绪,给Kafka添加健康检查,并让Schema Registry等待Kafka就绪后启动:
Kafka的健康检查配置:kafka: image: confluentinc/cp-kafka:7.4.0 # 保留原有其他配置 healthcheck: test: ["CMD", "kafka-topics", "--list", "--bootstrap-server", "localhost:9092"] interval: 10s timeout: 5s retries: 5Schema Registry的依赖配置调整:
schema-registry: # 保留原有其他配置 depends_on: kafka: condition: service_healthy验证Docker网络一致性
确认Kafka、Schema Registry、Neo4j所有组件都在同一个Docker网络中。若使用自定义网络,需确保所有服务都明确指定该网络;默认网络下可通过docker inspect <network-name>检查容器是否已加入。
内容的提问来源于stack exchange,提问作者Nekodu
相关产品推荐
相关产品推荐

