【生产者篇】 KafkaProducer实例化-初始化配置

1、KafkaProducer构造方法使用KafkaProducer的api之前需要得到一个KafkaProducer实例,梳理KafkaProducer的构造函数:KafkaProducer一共五个构造器://核心构造器 KafkaProducer(ProducerConfig config, Serializer<K> keySer...
摘要由CSDN通过智能技术生成
1、KafkaProducer构造方法

使用KafkaProducer的api之前需要得到一个KafkaProducer实例,梳理KafkaProducer的构造函数:KafkaProducer一共五个构造器:
在这里插入图片描述

//核心构造器    
KafkaProducer(ProducerConfig config,
                  Serializer<K> keySerializer,
                  Serializer<V> valueSerializer,
                  Metadata metadata,
                  KafkaClient kafkaClient)

四个构造,都是调用的核心构造器,然后核心构造方法是一个非pulbic,不能直接使用,

在使用的时候选择public KafkaProducer(Properties properties),或者 public KafkaProducer(Map map)操作简单,也符合kafka一切可配置化的思想。

可以看到在调用核心构造方法时候,配置项已经转化为ProducerConfig对象。

2、KafkaProducer配置实现简介:
  1. KafkaProducer的用户和默认配置会在KafkaProducer实例化过程中初始化到KafkaProducer的

    producerConfig的成员变量中,private final ProducerConfig producerConfig;

  2. ProducerConfig类中定义了所有的KafkaProducer需要的配置,并且负责实现默认的配置初始化。

  3. AbstractConfig类是ProducerConfig的父类,ProducerConfig实现了将用户的配置覆盖默认配置,并且将配置分类,并提供了获取各种配置的api

分为已经使用配置:已经用到的配置

解析配置:就是用户配置+自定义配置,

原始用户配置:用户配置

默认配置:默认配置

3、KafkaProducer的配置初始化源码分析

以使用 KafkaProducer(Properties properties)的构造方法为线路进行源码分析。其他构造方法也是一样的。

将properties变成ProducerConfig对象
public KafkaProducer(Properties properties) {
    this(new ProducerConfig(properties), null, null, null, null);
}
初始化默认配置
    public ProducerConfig(Properties props) {
   
        /**调用父类
         * CONFIG是在静态代码块中进行的,静态代码块优先于构造方法
         *
         * 在这里CONFIG 对象已经被初始化了
         * 就是所有的默认的初始化配置已经完成。
         *
         * 调用父类进行解析配置
         */
        super(CONFIG, props);
    }
初始化默认配置的静态代码块
/**
 * 初始化默认配置的静态代码块
 * 所有的配置将会被CONFIG对象包装
 
  默认初始化60项配置
 *
 */
static {
   
    CONFIG = new ConfigDef().define(BOOTSTRAP_SERVERS_CONFIG, Type.LIST, Collections.emptyList(), new ConfigDef.NonNullValidator(), Importance.HIGH, CommonClientConfigs.BOOTSTRAP_SERVERS_DOC)
            .define(BUFFER_MEMORY_CONFIG, Type.LONG, 32 * 1024 * 1024L, atLeast(0L), Importance.HIGH, BUFFER_MEMORY_DOC)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值