Kafka bootstrap 设置 cli 选项和配置文件之间的优先级
Kafka bootstrap setting precedence between cli option and configuration file
我用它来消费数据:
kafka-console-consumer.sh --bootstrap-server kafka01:9092 --topic test
--consumer.config /test/kafka/config/consumer.properties
consumer.properties 文件具有以下设置:
[...]
bootstrap.servers=kafka01:9092,kafka02:9092,kafka03:9092
[...]
所以我想问 bootstrap.server 什么优先? finally bootstrap 服务器会是什么? :
Only kafka01:9092 (as specified with the parameter "--bootstrap-sever) ? or kafka01:9092,kafka02:9092,kafka03:9092 as specified in consumer.properties 文件 ?
谢谢!
按照 mike 的建议,我在 --bootstrap-server 中提供了错误的地址,Kafka 显示警告:无法解析 wrong server
问题已回答,配置文件不优先于选项的 cli 参数
--bootstrap server
源代码也证实了答案 ConsoleConsumer
private[tools] def consumerProps(config: ConsumerConfig): Properties = {
val props = new Properties
props ++= config.consumerProps
props ++= config.extraConsumerProps
setAutoOffsetResetValue(config, props)
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, config.bootstrapServer)
CommandLineUtils.maybeMergeOptions(
props, ConsumerConfig.ISOLATION_LEVEL_CONFIG, config.options, config.isolationLevelOpt)
props}
因此,正如您所见,它首先使用通过配置文件提供的 consumerProps
,然后使用作为命令行参数提供的 extraConsumerProps
,定义如下:
val extraConsumerProps = CommandLineUtils.parseKeyValueArgs(options.valuesOf(consumerPropertyOpt).asScala)
val consumerProps = if (options.has(consumerConfigOpt))
Utils.loadProps(options.valueOf(consumerConfigOpt))
else
new Properties()
我用它来消费数据:
kafka-console-consumer.sh --bootstrap-server kafka01:9092 --topic test --consumer.config /test/kafka/config/consumer.properties
consumer.properties 文件具有以下设置:
[...]
bootstrap.servers=kafka01:9092,kafka02:9092,kafka03:9092
[...]
所以我想问 bootstrap.server 什么优先? finally bootstrap 服务器会是什么? :
Only kafka01:9092 (as specified with the parameter "--bootstrap-sever) ? or kafka01:9092,kafka02:9092,kafka03:9092 as specified in consumer.properties 文件 ?
谢谢!
按照 mike 的建议,我在 --bootstrap-server 中提供了错误的地址,Kafka 显示警告:无法解析 wrong server
问题已回答,配置文件不优先于选项的 cli 参数
--bootstrap server
源代码也证实了答案 ConsoleConsumer
private[tools] def consumerProps(config: ConsumerConfig): Properties = {
val props = new Properties
props ++= config.consumerProps
props ++= config.extraConsumerProps
setAutoOffsetResetValue(config, props)
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, config.bootstrapServer)
CommandLineUtils.maybeMergeOptions(
props, ConsumerConfig.ISOLATION_LEVEL_CONFIG, config.options, config.isolationLevelOpt)
props}
因此,正如您所见,它首先使用通过配置文件提供的 consumerProps
,然后使用作为命令行参数提供的 extraConsumerProps
,定义如下:
val extraConsumerProps = CommandLineUtils.parseKeyValueArgs(options.valuesOf(consumerPropertyOpt).asScala)
val consumerProps = if (options.has(consumerConfigOpt))
Utils.loadProps(options.valueOf(consumerConfigOpt))
else
new Properties()