懒惰加载(Lazy Loading)含义
Kafka懒惰加载(Lazy Loading)
Kafka 客户端的配置读取和实际使用是分阶段的,大概可以理解成这样:
初始化阶段
- KafkaProducer / KafkaConsumer 启动时,会把所有配置项读到一个
Map里。 - 它会打印日志告诉你“这些配置存在”。
- 但此时它还没和 broker 建立真正的 SSL/SASL 握手,所以配置只是存放着。
- KafkaProducer / KafkaConsumer 启动时,会把所有配置项读到一个
第一次网络交互阶段
- 比如 producer 第一次
send()消息,consumer 第一次poll()数据。 - 客户端才会用到
ssl.truststore.location、ssl.truststore.password、sasl.jaas.config、ssl.endpoint.identification.algorithm去做认证、握手。 - 如果有问题,这时候才会抛异常。
- 比如 producer 第一次
运行阶段
- 配置才算真正“被使用”。
- 这也是 Kafka 日志里会提示 “were supplied but are not used yet” 的原因。
类比
有点像你写了一个函数:
1 | Map<String, String> config = loadConfig(); |
loadConfig()已经读到一堆参数。- 但
new KafkaProducer(config)只是存起来,还没去用。 - 直到
producer.send()的时候,才真的“用”到了 SSL/SASL 配置。
👉 所以,这个提示可以直接理解成:
Kafka 告诉你:配置已经传进来了,但目前(初始化时)还没真正用到,要等建立连接时才会生效。