之前用SpringBoot集成Kafka的时候,后面运行就报一下错误:
Caused by: java.lang.IllegalStateException: Topic(s) [topic2, topic3] is/are not present and missingTopicsFatal is true at org.springframework.kafka.listener.AbstractMessageListenerContainer.checkTopics(AbstractMessageListenerContainer.java:351) ~[spring-kafka-2.3.0.RC1.jar:2.3.0.RC1] at org.springframework.kafka.listener.ConcurrentMessageListenerContainer.doStart(ConcurrentMessageListenerContainer.java:136) ~[spring-kafka-2.3.0.RC1.jar:2.3.0.RC1] at org.springframework.kafka.listener.AbstractMessageListenerContainer.start(AbstractMessageListenerContainer.java:308) ~[spring-kafka-2.3.0.RC1.jar:2.3.0.RC1] at org.springframework.kafka.config.KafkaListenerEndpointRegistry.startIfNecessary(KafkaListenerEndpointRegistry.java:309) ~[spring-kafka-2.3.0.RC1.jar:2.3.0.RC1] at org.springframework.kafka.config.KafkaListenerEndpointRegistry.start(KafkaListenerEndpointRegistry.java:256) ~[spring-kafka-2.3.0.RC1.jar:2.3.0.RC1] at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:182) ~[spring-context-5.2.0.BUILD-SNAPSHOT.jar:5.2.0.BUILD-SNAPSHOT] ... 14 common frames omitted
经过排查和寻找方案,才知道原因,我的Kafka版本是2.3.1,凡是2.2版本以上的,都添加了一个新的属性missingTopicsFatal
,需要设置成false
因此需要在application.yml文件这样设置一下就Ok了
kafka:
producer:
bootstrap-servers: localhost:9092
consumer:
bootstrap-servers: localhost:9092
group-id: info
enable-auto-commit: true
auto-offset-reset: latest
template:
default-topic: info
listener:
missing-topics-fatal: false