我试图了解Apache Kafka中--broker-list
和--bootstrap-server
标志之间的区别。
使用kafka命令行工具时(如quickstart中所述):
kafka-console-producer.sh
需要--broker-list
标志kafka-console-consumer.sh
需要--bootstrap-server
标志为什么生产者不能使用bootstrap-server
,而是需要“手动”提供经纪人列表?引导服务器是否应该返回生产者可以连接的所有代理的元数据?
答案 0 :(得分:2)
如果您转到kafka.tools.ConsoleProducer
源代码(由bash脚本调用的程序),您将看到:
def producerProps(config: ProducerConfig): Properties = {
val props =
if (config.options.has(config.producerConfigOpt))
Utils.loadProps(config.options.valueOf(config.producerConfigOpt))
else new Properties
props ++= config.extraProducerProps
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, config.brokerList) // <---- brokerList is passed as BOOTSTRAP_SERVER
内幕--broker-list映射到bootstrap.server属性。 我认为这是向后兼容。
摘要:两个标记--broker-list
和--bootstrap-server
都映射到相同的属性
答案 1 :(得分:2)
为了向后兼容,只是名称不同而已,但实际上它们是相同的。当您将--broker-list
与控制台生产者一起使用时,您不需要提供所有代理的完整列表,而只需提供至少一个即可。因此这是一个引导服务器列表,适用于控制台使用者。