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()