我們在開發(fā)過程中使用Kafka會(huì)遇到topic太多,自己創(chuàng)建太費(fèi)勁,所以想一次配置終身使用,自己去創(chuàng)建topic,和flyway一樣自己去創(chuàng)建表,今天總結(jié)一下配置方式。文章來源地址http://www.zghlxwxcb.cn/news/detail-515767.html
1.application.yml配置
kafka:
# 自動(dòng)創(chuàng)建topic
topics:
# topic
- name: import_vulnera_topic
#分區(qū)數(shù)
num-partitions: 6
#副本數(shù)
replication-factor: 2
# topic
- name: import_vulnerability_topic
num-partitions: 6
replication-factor: 2
# topic
- name: import_vulnerability_result_topic
num-partitions: 6
replication-factor: 2
2.配置Configuration
import org.apache.kafka.clients.admin.NewTopic;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.support.GenericWebApplicationContext;
import javax.annotation.PostConstruct;
import java.util.List;
/**
* 自動(dòng)創(chuàng)建topic
*/
@Configuration
@SuppressWarnings("all")
public class TopicAdministrator {
private final TopicConfigurations configurations;
private final GenericWebApplicationContext context;
public TopicAdministrator(TopicConfigurations configurations, GenericWebApplicationContext genericContext) {
this.configurations = configurations;
this.context = genericContext;
}
@PostConstruct
public void init() {
initializeBeans(configurations.getTopics());
}
private void initializeBeans(List<TopicConfigurations.Topic> topics) {
topics.forEach(t -> context.registerBean(t.name, NewTopic.class, t::toNewTopic));
}
}
import lombok.Data;
import org.apache.kafka.clients.admin.NewTopic;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import java.util.List;
@Configuration
@ConfigurationProperties(prefix = "kafka")
@Data
public class TopicConfigurations {
private List<Topic> topics;
@Data
static class Topic {
String name;
Integer numPartitions = 3;
Short replicationFactor = 1;
NewTopic toNewTopic() {
return new NewTopic(this.name, this.numPartitions, this.replicationFactor);
}
}
}
文章來源:http://www.zghlxwxcb.cn/news/detail-515767.html
到了這里,關(guān)于【SpringBoot】在Springboot中怎么設(shè)置Kafka自動(dòng)創(chuàng)建Topic的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!