diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfiguration.java index e3d8a084af..99c557f4ec 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfiguration.java @@ -108,7 +108,7 @@ public class KafkaAutoConfiguration { @ConditionalOnMissingBean(KafkaAdmin.class) public KafkaAdmin kafkaAdmin() { KafkaAdmin kafkaAdmin = new KafkaAdmin(this.properties.buildAdminProperties()); - kafkaAdmin.setFatalIfBrokerNotAvailable(this.properties.getAdmin().isFailIfNoBrokers()); + kafkaAdmin.setFatalIfBrokerNotAvailable(this.properties.getAdmin().isFailFast()); return kafkaAdmin; } diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaProperties.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaProperties.java index c65f26da0d..fd68596ead 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaProperties.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaProperties.java @@ -673,15 +673,14 @@ public class KafkaProperties { private String clientId; /** - * Additional producer-specific properties used to configure the client. + * Additional admin-specific properties used to configure the client. */ private final Map properties = new HashMap<>(); /** - * When true, the application context will not load if the broker connection - * fails when attempting to provision topics. + * Fail fast if the broker is not available on startup. */ - private boolean failIfNoBrokers; + private boolean failFast; public Ssl getSsl() { return this.ssl; @@ -695,12 +694,12 @@ public class KafkaProperties { this.clientId = clientId; } - public boolean isFailIfNoBrokers() { - return this.failIfNoBrokers; + public boolean isFailFast() { + return this.failFast; } - public void setFailIfNoBrokers(boolean failIfNoBrokers) { - this.failIfNoBrokers = failIfNoBrokers; + public void setFailFast(boolean failFast) { + this.failFast = failFast; } public Map getProperties() { diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfigurationTests.java index 1e2a9ad734..b6933fde9d 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfigurationTests.java @@ -177,7 +177,7 @@ public class KafkaAutoConfigurationTests { public void adminProperties() { load("spring.kafka.clientId=cid", "spring.kafka.properties.foo.bar.baz=qux.fiz.buz", - "spring.kafka.admin.fail-if-no-brokers=true", + "spring.kafka.admin.fail-fast=true", "spring.kafka.admin.properties.fiz.buz=fix.fox", "spring.kafka.admin.ssl.key-password=p4", "spring.kafka.admin.ssl.keystore-location=classpath:ksLocP", diff --git a/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc b/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc index fbe67962b8..443126242e 100644 --- a/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc +++ b/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc @@ -939,9 +939,8 @@ content into your application; rather pick only the properties that you need. spring.jms.template.time-to-live= # Time-to-live of a message when sending in milliseconds. Enable QoS when set. # APACHE KAFKA ({sc-spring-boot-autoconfigure}/kafka/KafkaProperties.{sc-ext}[KafkaProperties]) - spring.kafka.admin.bootstrap-servers= # Comma-delimited list of host:port pairs to use for establishing the initial connection to the Kafka cluster. spring.kafka.admin.client-id= # Id to pass to the server when making requests; used for server-side logging. - spring.kafka.admin.fail-if-no-brokers=false # When true, the application context will not load if the broker connection fails when attempting to provision topics. + spring.kafka.admin.fail-fast=false # Fail fast if the broker is not available on startup. spring.kafka.admin.properties.*= # Additional admin-specific properties used to configure the client. spring.kafka.admin.ssl.key-password= # Password of the private key in the key store file. spring.kafka.admin.ssl.keystore-location= # Location of the key store file. diff --git a/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc b/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc index 2a0e52e567..77d54c6739 100644 --- a/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc +++ b/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc @@ -4816,20 +4816,14 @@ Kafka configuration is controlled by external configuration properties in spring.kafka.consumer.group-id=myGroup ---- +TIP: To create a topic on startup, simply add a bean of type `NewTopic`. If the topic +already exists, the related bean is ignored. + See {sc-spring-boot-autoconfigure}/kafka/KafkaProperties.{sc-ext}[`KafkaProperties`] for more of the supported options. -[[boot-features-kafka-topics]] -==== Creating Topics - -Spring Boot auto configuration will add a `KafkaAdmin` bean to the application context. -This bean will automatically create a topic for each `NewTopic` bean in the application context. -Topics can only be added with this technique, not modified; if a topic already exists, the `NewTopic` bean is ignored. - - - [[boot-features-kafka-sending-a-message]] ==== Sending a Message Spring's `KafkaTemplate` is auto-configured and you can autowire them directly in your own