尽管 StreamsConfig.BOOTSTRAP_SERVERS_CONFIG 指向不同的主机,但 Kafka 流仍会尝试连接到本地主机

时间:2021-05-12 01:34:51

标签: apache-kafka apache-kafka-streams spring-kafka

我有一个 kafka 流配置,如下所示。我已经在调试器中确认 KafkaProperties 确实有一个值为 myhost.mydomain.org:9092 的引导服务器条目。

当我运行我的应用程序时,我收到警告:

WARN 83530 --- [-StreamThread-1] org.apache.kafka.clients.NetworkClient   : 
[Consumer clientId=...-StreamThread-1-consumer, groupId=mygid] 
Connection to node 1001 (kafka/127.0.0.1:9092) could not be established. Broker may not be available.

我已确认代理已启动并正在运行并接受连接。我不知道从哪里获取 localhost。

    @Bean("myKSConfig")
    public StreamsBuilderFactoryBean kafkaStreams(KafkaProperties kafkaProperties,
                                     @Value("${spring.application.name}") String appName) {
        var props = new HashMap<String, Object>(kafkaProperties.getProperties());
        props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaProperties.getBootstrapServers());
        props.put(StreamsConfig.APPLICATION_ID_CONFIG, appName);
        props.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass());
        props.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, JsonSerde.class);
        props.put(StreamsConfig.STATE_DIR_CONFIG, "state_data_dir");
        props.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, 10 * 1000);
        props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
        props.put(JsonDeserializer.VALUE_DEFAULT_TYPE, JsonNode.class);
        var config = new KafkaStreamsConfiguration(props);
        return new StreamsBuilderFactoryBean(config);
    }

具有这些属性

...
spring.kafka.bootstrap-servers=myhost.mydomain.org:9092
...

1 个答案:

答案 0 :(得分:1)

如果您没有编辑 /etc/hosts 以创建从该地址到 127.0.0.1 的映射,则引导程序将返回其 advertised.listeners 配置

检查代理中的配置以验证您的客户端可以连接到广告地址