You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kafka_2.12-3.4.0版本KafkaConfig类缺失HostNameProp等属性求替代方案

Kafka 3.4.0(Kafka_2.12)中HostNameProp和PortProp的替代方案

在Kafka 3.4.0版本中,kafka.server.KafkaConfig类确实移除了HostNameProp和PortProp属性,相关配置逻辑已整合到监听地址的配置项中,以下是具体替代方案:

1. HostNameProp的替代

原HostNameProp对应的主机信息,现在需要通过以下两个核心配置项获取:

  • LISTENERS_CONFIG:对应配置文件中的listeners键,定义Kafka Broker监听的地址列表,格式为protocol://host:port
  • ADVERTISED_LISTENERS_CONFIG:对应配置文件中的advertised.listeners键,定义Broker对外暴露的地址列表

如果需要单独提取主机名,需解析上述配置项的字符串值,拆分出host部分。

2. PortProp的替代

原PortProp对应的端口信息同样包含在listeners或advertised.listeners配置中,通过KafkaConfig的listeners()或advertisedListeners()方法获取完整地址后,拆分出端口部分即可。

旧版本的独立port配置(对应PortProp)已不再单独维护,所有端口信息都整合到监听地址里。

代码示例

import kafka.server.KafkaConfig;
import java.util.Properties;

public class KafkaConfigParser {
    public static void main(String[] args) {
        Properties kafkaProps = new Properties();
        kafkaProps.put(KafkaConfig.LISTENERS_CONFIG, "PLAINTEXT://kafka-broker:9092,SSL://kafka-broker:9093");
        
        KafkaConfig config = new KafkaConfig(kafkaProps);
        
        // 解析第一个监听地址的主机和端口
        String firstListener = config.listeners().iterator().next().toString();
        String[] addressParts = firstListener.split("://")[1].split(":");
        
        String targetHost = addressParts[0];
        int targetPort = Integer.parseInt(addressParts[1]);
        
        System.out.printf("Extracted Host: %s, Port: %d%n", targetHost, targetPort);
    }
}

内容的提问来源于stack exchange,提问作者purvi ijantkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 22:16:01