上一章我们了解到KafkaAutoConfiguration自动初始化依赖Bean,如下图所示若应用中不包含kafkaAdmin对象,KafkaAutoConfiguration为我们应用创建一个,那么kafkaAdmin这个类的作用是什么呢?
@Bean
@ConditionalOnMissingBean
public KafkaAdmin kafkaAdmin() {
//初始化kafkaAdmin对象用于管理topic等元数据
KafkaAdmin kafkaAdmin = new KafkaAdmin(this.properties.buildAdminProperties());
//如果为ture 初始化期间无法连接到代理时无法加载应用程序上下文的情况下检查/添加主题
kafkaAdmin.setFatalIfBrokerNotAvailable(this.properties.getAdmin().isFailFast());
return kafkaAdmin;
}
在kafka应用由consumer角色负责消费数据,producer角色负责生产消息。那么KafkaAdmin(父类AdminClient)的作用就是对于topic的一些列管理包括topic的新增(partition,replicas分配),删除,修改(查看源码可以知道真正的执行者是KafkaAdminClient类)
springboot2.x中如何去创建topic呢,提供了多种方式。
/**
*
*@author fangyuan
* 构建kafka topic如果topic已经存在,忽略Bean
*/
@Configuration
public class TopicConfigure