Skip to content
Kafka Is FunProgress

Getting Started · Beginner

Topic Creation with KafkaAdmin

Spring creates topics at startup via KafkaAdmin. Use TopicBuilder for concise declarations. Topics are created if missing, not modified if existing.

KafkaTopicConfig.javajava
@Configuration
public class KafkaTopicConfig {

    @Bean
    public NewTopic orderCreatedTopic() {
        return TopicBuilder.name("orders.order.created")
            .partitions(6)
            .replicas(3)
            .config(TopicConfig.RETENTION_MS_CONFIG, "604800000")     // 7 days
            .config(TopicConfig.MIN_IN_SYNC_REPLICAS_CONFIG, "2")
            .build();
    }

    @Bean
    public NewTopic orderDeadLetterTopic() {
        return TopicBuilder.name("orders.order.created-dlt")
            .partitions(6)
            .replicas(3)
            .config(TopicConfig.RETENTION_MS_CONFIG, "2592000000")   // 30 days
            .build();
    }

    @Bean
    public KafkaAdmin.NewTopics allTopics() {
        return new KafkaAdmin.NewTopics(
            TopicBuilder.name("orders.order.updated").partitions(6).replicas(3).build(),
            TopicBuilder.name("orders.order.cancelled").partitions(6).replicas(3).build()
        );
    }
}