diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/kafka/ConcurrentKafkaListenerContainerFactoryConfigurer.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/kafka/ConcurrentKafkaListenerContainerFactoryConfigurer.java index 0fddd2896116..232a7e51b415 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/kafka/ConcurrentKafkaListenerContainerFactoryConfigurer.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/kafka/ConcurrentKafkaListenerContainerFactoryConfigurer.java @@ -159,6 +159,7 @@ private void configureContainer(ContainerProperties container) { .as(Number::intValue).to(container::setMonitorInterval); map.from(properties::getLogContainerConfig).to(container::setLogContainerConfig); map.from(this.transactionManager).to(container::setTransactionManager); + map.from(properties::getMissingTopicsFatal).to(container::setMissingTopicsFatal); } } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaProperties.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaProperties.java index 81be6990e22b..e82c88e6d3bd 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaProperties.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaProperties.java @@ -873,6 +873,11 @@ public enum Type { */ private Boolean logContainerConfig; + /** + * Set to false to disable checking that topic(s) exist. + */ + private Boolean missingTopicsFatal; + public Type getType() { return this.type; } @@ -961,6 +966,14 @@ public void setLogContainerConfig(Boolean logContainerConfig) { this.logContainerConfig = logContainerConfig; } + public Boolean getMissingTopicsFatal() { + return this.missingTopicsFatal; + } + + public void setMissingTopicsFatal(Boolean missingTopicsFatal) { + this.missingTopicsFatal = missingTopicsFatal; + } + } public static class Ssl { diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfigurationTests.java index b6a92d4992e3..553246890c22 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfigurationTests.java @@ -450,6 +450,7 @@ public void listenerProperties() { "spring.kafka.listener.idle-event-interval=1s", "spring.kafka.listener.monitor-interval=45", "spring.kafka.listener.log-container-config=true", + "spring.kafka.listener.missing-topics-fatal=false", "spring.kafka.jaas.enabled=true", "spring.kafka.producer.transaction-id-prefix=foo", "spring.kafka.jaas.login-module=foo", @@ -484,6 +485,7 @@ public void listenerProperties() { .isEqualTo(1000L); assertThat(containerProperties.getMonitorInterval()).isEqualTo(45); assertThat(containerProperties.isLogContainerConfig()).isTrue(); + assertThat(containerProperties.isMissingTopicsFatal()).isFalse(); assertThat(ReflectionTestUtils.getField(kafkaListenerContainerFactory, "concurrency")).isEqualTo(3); assertThat(kafkaListenerContainerFactory.isBatchListener()).isTrue(); diff --git a/spring-boot-project/spring-boot-dependencies/pom.xml b/spring-boot-project/spring-boot-dependencies/pom.xml index 7cc8f21a0dd9..79c1c6e37e84 100644 --- a/spring-boot-project/spring-boot-dependencies/pom.xml +++ b/spring-boot-project/spring-boot-dependencies/pom.xml @@ -187,7 +187,7 @@ ${spring.version} 1.0.0.M1 5.2.0.M1 - 2.3.0.M1 + 2.3.0.BUILD-SNAPSHOT 2.3.2.RELEASE 2.0.0.M1 2.0.3.RELEASE