15、Kafka ------ SpringBoot 整合 Kafka (自动配置类 KafkaAutoConfiguration 源代码剖析)

目录

  • SpringBoot 整合 Kafka 的自动配置及源代码剖析
    • Spring Boot 为 Kafka 提供的自动配置
    • KafkaAutoConfiguration Kafka自动配置类源码解析
      • 1、自动配置类:KafkaAutoConfiguration 注解解析
      • 2、自动配置类:KafkaAutoConfiguration 配置的 bean
        • 1、KafkaTemplate:消息生产者
        • 2、ProducerListener:消息生产者监听器
        • 3、ConsumerFactory:消息消费者工厂
        • 4、ProducerFactory:消息生产者工厂
        • 5、KafkaTransactionManager:局部事务管理器
        • 6、KafkaAdmin:封装了 Kafka 的管理API
      • 3、被导入的两个自动配置类:
        • 1、KafkaAnnotationDrivenConfiguration:
        • 2、KafkaStreamsAnnotationDrivenConfiguration:

SpringBoot 整合 Kafka 的自动配置及源代码剖析


Spring Boot 为 Kafka 提供的自动配置


Sping Boot 并没有为整合 Kafka 提供 Starter,而是通过 spring-kafka 项目的自动配置来提供支持。
(重要是有自动配置类,starter 也是搞传递依赖而已,通过添加starter,把依赖库加进来,关键就是要有自动配置类而已)

只要类加载路径下包含了 spring-kafka 依赖库,Spring Boot 会自动配置 KafkaAdmin 和 KafkaTemplate,

其中
KafkaAdmin 封装了 Kafka 的管理API。

KafkaTemplate 则提供了大量重载的 send()方法 用于发送消息。



KafkaAutoConfiguration Kafka自动配置类源码解析

先创建一个springboot项目,看 KafkaAutoConfiguration 源代码

15、Kafka ------ SpringBoot 整合 Kafka (自动配置类 KafkaAutoConfiguration 源代码剖析)_第1张图片

演示时习惯删这些,可删可不删

15、Kafka ------ SpringBoot 整合 Kafka (自动配置类 KafkaAutoConfiguration 源代码剖析)_第2张图片

这个就是 kafka 的自动配置类:KafkaAutoConfiguration

这个就是 springboot 给 kafka 提供的自动配置类

15、Kafka ------ SpringBoot 整合 Kafka (自动配置类 KafkaAutoConfiguration 源代码剖析)_第3张图片



1、自动配置类:KafkaAutoConfiguration 注解解析

该类上有 @ConditionalOnClass(KafkaTemplate.class) 条件注解 ,要求有 KafkaTemplate 时该配置类才生效。
而 KafkaTemplate 类就位于 spring-kafka 项目中,因此这意味着只有当类加载路径下有 spring-kafka 项目时,自动配置才能生效。

15、Kafka ------ SpringBoot 整合 Kafka (自动配置类 KafkaAutoConfiguration 源代码剖析)_第4张图片


属性处理类 : KafkaProperties

15、Kafka ------ SpringBoot 整合 Kafka (自动配置类 KafkaAutoConfiguration 源代码剖析)_第5张图片


导入的这两个注解:

15、Kafka ------ SpringBoot 整合 Kafka (自动配置类 KafkaAutoConfiguration 源代码剖析)_第6张图片



2、自动配置类:KafkaAutoConfiguration 配置的 bean


在 KafkaAutoConfiguration 自动配置类中,配置了如下Bean:

1、KafkaTemplate:消息生产者

KafkaTemplate: 只有当容器中没有 KafkaTemplate 时,自动配置才会生效

KafkaTemplate 主要是用来发送消息的,可以理解为是kafka的消息生产者
15、Kafka ------ SpringBoot 整合 Kafka (自动配置类 KafkaAutoConfiguration 源代码剖析)_第7张图片


2、ProducerListener:消息生产者监听器

ProducerListener:
它是 Spring Boot 为消息生产者(KafkaTemplate)提供的一个监听器。
一般不需要管它,但如果你要在消息发送成功时、消息发送失败时,进行某些回调处理,你可以实现自己的 ProducerListener,该 Bean 中 onSuccess()方法 和 onError方法 就会对发送成功、发送失败进行回调处理。

15、Kafka ------ SpringBoot 整合 Kafka (自动配置类 KafkaAutoConfiguration 源代码剖析)_第8张图片


回调处理的方法

15、Kafka ------ SpringBoot 整合 Kafka (自动配置类 KafkaAutoConfiguration 源代码剖析)_第9张图片


无论消息发送成功还是失败,都会有这个 LoggingProducerListener 记录日志。

15、Kafka ------ SpringBoot 整合 Kafka (自动配置类 KafkaAutoConfiguration 源代码剖析)_第10张图片


消息发送成功,啥也不干,消息发送失败,就会把消息发送失败的过程记录下来。

15、Kafka ------ SpringBoot 整合 Kafka (自动配置类 KafkaAutoConfiguration 源代码剖析)_第11张图片


3、ConsumerFactory:消息消费者工厂

ConsumerFactory: 消息消费者工厂。一般不需要管它,它负责为消息消费者提供支撑。

15、Kafka ------ SpringBoot 整合 Kafka (自动配置类 KafkaAutoConfiguration 源代码剖析)_第12张图片


4、ProducerFactory:消息生产者工厂

ProducerFactory: 消息生产者工厂。一般不需要管它,它负责为消息生产者提供支撑。

15、Kafka ------ SpringBoot 整合 Kafka (自动配置类 KafkaAutoConfiguration 源代码剖析)_第13张图片


5、KafkaTransactionManager:局部事务管理器

KafkaTransactionManager: Kafka的局部事务管理器。
只有当spring.kafka.producer.transaction-id-prefix存在时,Spring Boot才会自动配置该事务管理器。
比如基于 Atomikos 开源框架的分布式事务。

15、Kafka ------ SpringBoot 整合 Kafka (自动配置类 KafkaAutoConfiguration 源代码剖析)_第14张图片


6、KafkaAdmin:封装了 Kafka 的管理API

KafkaAdmin:(只有当容器中没有KafkaAdmin时,自动配置才会生效)

15、Kafka ------ SpringBoot 整合 Kafka (自动配置类 KafkaAutoConfiguration 源代码剖析)_第15张图片



3、被导入的两个自动配置类:

15、Kafka ------ SpringBoot 整合 Kafka (自动配置类 KafkaAutoConfiguration 源代码剖析)_第16张图片


1、KafkaAnnotationDrivenConfiguration:

它的作用是根据 @KafkaListener 注解来启用消息监听器

KafkaAnnotationDrivenConfiguration 这个配置类还配置了监听器的容器工厂(ConcurrentKafkaListenerContainerFactory)及它的配置器(Configurer)。


ConcurrentKafkaListenerContainerFactory:
15、Kafka ------ SpringBoot 整合 Kafka (自动配置类 KafkaAutoConfiguration 源代码剖析)_第17张图片


Configurer:就是指这个

15、Kafka ------ SpringBoot 整合 Kafka (自动配置类 KafkaAutoConfiguration 源代码剖析)_第18张图片



2、KafkaStreamsAnnotationDrivenConfiguration:

主要是为 Kafka 流API 来提供支撑的自动配置类。

15、Kafka ------ SpringBoot 整合 Kafka (自动配置类 KafkaAutoConfiguration 源代码剖析)_第19张图片

你可能感兴趣的:(Kafka,系列,kafka,spring,boot,分布式)