本节讲述kafka producer的初始化, 核心代码在clients/producer/KafkaProducer.java类里:
下面的代码贴了一些重要参数:
默认的配置在clients/producer/ProducerConfig.java类里
// 配置用户自定义的参数
Map<String, Object> userProvidedConfigs = config.originals();
// 配置client的id号 没有指定会自己分配
clientId = config.getString(ProducerConfig.CLIENT_ID_CONFIG);
// 设置kafka分区器
this.partitioner = config.getConfiguredInstance(ProducerConfig.PARTITIONER_CLASS_CONFIG,Partitioner.class);
// 生产者重试的时间间隔 retry.backoff.ms 默认值是100ms
long retretryBackoffMs = config.getLong(ProducerConfig.RETRY_BACKOFF_MS_CONFIG);
// 元数据结构 生产者从服务端拉取过来的kafka的元数据
// retryBackoffMs 生产者拉取元数据, 发送网络请求, 如果失败, 重试的时间间隔
// METADATA_MAX_AGE_CONFIG = "metadata.max.age.ms" 默认5分钟
// 生产者每隔一段时间都会更新自己的元数据 默认每隔5分钟, 去服务端重新拉取元数据
this.metadata = new Metadata(retryBackoffMs,config.getLong