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:portADVERTISED_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
相关产品推荐
相关产品推荐

