懒惰加载(Lazy Loading)含义

Kafka懒惰加载(Lazy Loading)

Kafka 客户端的配置读取和实际使用是分阶段的,大概可以理解成这样:

  1. 初始化阶段

    • KafkaProducer / KafkaConsumer 启动时,会把所有配置项读到一个 Map 里。
    • 它会打印日志告诉你“这些配置存在”。
    • 但此时它还没和 broker 建立真正的 SSL/SASL 握手,所以配置只是存放着。
  2. 第一次网络交互阶段

    • 比如 producer 第一次 send() 消息,consumer 第一次 poll() 数据。
    • 客户端才会用到 ssl.truststore.locationssl.truststore.passwordsasl.jaas.configssl.endpoint.identification.algorithm 去做认证、握手。
    • 如果有问题,这时候才会抛异常。
  3. 运行阶段

    • 配置才算真正“被使用”。
    • 这也是 Kafka 日志里会提示 “were supplied but are not used yet” 的原因。

类比

有点像你写了一个函数:

1
2
Map<String, String> config = loadConfig();
KafkaProducer producer = new KafkaProducer(config);
  • loadConfig() 已经读到一堆参数。
  • new KafkaProducer(config) 只是存起来,还没去用。
  • 直到 producer.send() 的时候,才真的“用”到了 SSL/SASL 配置。

👉 所以,这个提示可以直接理解成:
Kafka 告诉你:配置已经传进来了,但目前(初始化时)还没真正用到,要等建立连接时才会生效。