1.入口
Kafka通过new一个KafkaProducer将配置项进行加载。将用户定义的properties作为参数,构造成一个ProducerConfig对象。
public KafkaProducer(Properties properties) {
//构造成ProducerConfig对象
this(new ProducerConfig(properties), null, null);
}
2.ProducerConfig
ProducerConfig保存的是生产者的全部配置项,这里包括用户自定义的和默认的配置项。实际上,ProducerConfig继承自AbstractConfig。其实生产者的配置最终会保存到AbstractConfig中。
![producerConfig](https://images2018.cnblogs.com/blog/944831/201804/944831-20180401122519228-2073377265.png)
3.ConfigDef
ProucerConfig的构造函数中直接调用了父类即AbstractConfig的构造函数,并传入参数ConfigDef。这个ConfigDef作用是什么呢?ConfigDef在ProucerConfig的static块中进行初始化,ConfigDef通过一些列的链式操作将生产者的所有配置项(包括默认值、参数类型、校验器)报存在其叫做configKeys的map中。也就是说ConfigDef保存了所有的配置项的默认值
![configDef](https://images2018.cnblogs.com/blog/944831/201804/944831-20180401122644464-1342121534.png)