Create spring-boot-kafka module

Issue: 46092
This commit is contained in:
Andy Wilkinson 2025-03-20 15:38:36 +00:00 committed by Phillip Webb
parent 0690e870d2
commit 1eb98ba9f7
38 changed files with 342 additions and 231 deletions

View File

@ -76,6 +76,7 @@ include "spring-boot-project:spring-boot-jdbc"
include "spring-boot-project:spring-boot-jetty"
include "spring-boot-project:spring-boot-jms"
include "spring-boot-project:spring-boot-jsonb"
include "spring-boot-project:spring-boot-kafka"
include "spring-boot-project:spring-boot-liquibase"
include "spring-boot-project:spring-boot-mail"
include "spring-boot-project:spring-boot-parent"

View File

@ -42,6 +42,7 @@ dependencies {
optional(project(":spring-boot-project:spring-boot-jdbc"))
optional(project(":spring-boot-project:spring-boot-jetty"))
optional(project(":spring-boot-project:spring-boot-jsonb"))
optional(project(":spring-boot-project:spring-boot-kafka"))
optional(project(":spring-boot-project:spring-boot-liquibase"))
optional(project(":spring-boot-project:spring-boot-mail"))
optional(project(":spring-boot-project:spring-boot-reactor-netty"))

View File

@ -23,10 +23,9 @@ import io.micrometer.core.instrument.binder.kafka.KafkaStreamsMetrics;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.kafka.DefaultKafkaConsumerFactoryCustomizer;
import org.springframework.boot.autoconfigure.kafka.DefaultKafkaProducerFactoryCustomizer;
import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration;
import org.springframework.boot.autoconfigure.kafka.StreamsBuilderFactoryBeanCustomizer;
import org.springframework.boot.kafka.autoconfigure.DefaultKafkaConsumerFactoryCustomizer;
import org.springframework.boot.kafka.autoconfigure.DefaultKafkaProducerFactoryCustomizer;
import org.springframework.boot.kafka.autoconfigure.StreamsBuilderFactoryBeanCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.kafka.config.StreamsBuilderFactoryBean;
@ -45,7 +44,7 @@ import org.springframework.kafka.streams.KafkaStreamsMicrometerListener;
* @author Eddú Meléndez
* @since 2.1.0
*/
@AutoConfiguration(before = KafkaAutoConfiguration.class,
@AutoConfiguration(beforeName = "org.springframework.boot.kafka.autoconfigure.KafkaAutoConfiguration",
after = { MetricsAutoConfiguration.class, CompositeMeterRegistryAutoConfiguration.class })
@ConditionalOnClass({ KafkaClientMetrics.class, ProducerFactory.class })
@ConditionalOnBean(MeterRegistry.class)

View File

@ -26,7 +26,7 @@ import org.junit.jupiter.api.Test;
import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration;
import org.springframework.boot.kafka.autoconfigure.KafkaAutoConfiguration;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

View File

@ -109,7 +109,6 @@ dependencies {
optional("org.apache.commons:commons-dbcp2")
optional("org.apache.httpcomponents.client5:httpclient5")
optional("org.apache.httpcomponents.core5:httpcore5-reactive")
optional("org.apache.kafka:kafka-streams")
optional("org.apache.tomcat.embed:tomcat-embed-core")
optional("org.apache.tomcat.embed:tomcat-embed-el")
optional("org.apache.tomcat.embed:tomcat-embed-websocket")
@ -222,7 +221,6 @@ dependencies {
optional("org.springframework.session:spring-session-jdbc")
optional("org.springframework.amqp:spring-rabbit")
optional("org.springframework.amqp:spring-rabbit-stream")
optional("org.springframework.kafka:spring-kafka")
optional("org.springframework.ws:spring-ws-core") {
exclude group: "com.sun.mail", module: "jakarta.mail"
exclude group: "jakarta.platform", module: "jakarta.jakartaee-api"
@ -263,7 +261,6 @@ dependencies {
testImplementation("org.postgresql:postgresql")
testImplementation("org.postgresql:r2dbc-postgresql")
testImplementation("org.springframework.graphql:spring-graphql-test")
testImplementation("org.springframework.kafka:spring-kafka-test")
testImplementation("org.springframework.pulsar:spring-pulsar-cache-provider-caffeine")
testImplementation("org.springframework.security:spring-security-test")
testImplementation("org.yaml:snakeyaml")

View File

@ -927,177 +927,6 @@
"reason": "Narayana support has moved to third party starter."
}
},
{
"name": "spring.kafka.admin.ssl.keystore-location",
"type": "org.springframework.core.io.Resource",
"description": "Location of the key store file.",
"deprecation": {
"replacement": "spring.kafka.admin.ssl.key-store-location",
"level": "error"
}
},
{
"name": "spring.kafka.admin.ssl.keystore-password",
"type": "java.lang.String",
"description": "Store password for the key store file.",
"deprecation": {
"replacement": "spring.kafka.admin.ssl.key-store-password",
"level": "error"
}
},
{
"name": "spring.kafka.admin.ssl.truststore-location",
"type": "org.springframework.core.io.Resource",
"description": "Location of the trust store file.",
"deprecation": {
"replacement": "spring.kafka.admin.ssl.trust-store-location",
"level": "error"
}
},
{
"name": "spring.kafka.admin.ssl.truststore-password",
"type": "java.lang.String",
"description": "Store password for the trust store file.",
"deprecation": {
"replacement": "spring.kafka.admin.ssl.trust-store-password",
"level": "error"
}
},
{
"name": "spring.kafka.consumer.ssl.keystore-location",
"type": "org.springframework.core.io.Resource",
"description": "Location of the key store file.",
"deprecation": {
"replacement": "spring.kafka.consumer.ssl.key-store-location",
"level": "error"
}
},
{
"name": "spring.kafka.consumer.ssl.keystore-password",
"type": "java.lang.String",
"description": "Store password for the key store file.",
"deprecation": {
"replacement": "spring.kafka.consumer.ssl.key-store-password",
"level": "error"
}
},
{
"name": "spring.kafka.consumer.ssl.truststore-location",
"type": "org.springframework.core.io.Resource",
"description": "Location of the trust store file.",
"deprecation": {
"replacement": "spring.kafka.consumer.ssl.trust-store-location",
"level": "error"
}
},
{
"name": "spring.kafka.consumer.ssl.truststore-password",
"type": "java.lang.String",
"description": "Store password for the trust store file.",
"deprecation": {
"replacement": "spring.kafka.consumer.ssl.trust-store-password",
"level": "error"
}
},
{
"name": "spring.kafka.listener.only-log-record-metadata",
"type": "java.lang.Boolean",
"defaultValue": true,
"description": "Whether to suppress the entire record from being written to the log when retries are being attempted.",
"deprecation": {
"reason": "Use KafkaUtils#setConsumerRecordFormatter instead.",
"level": "error"
}
},
{
"name": "spring.kafka.producer.ssl.keystore-location",
"type": "org.springframework.core.io.Resource",
"description": "Location of the key store file.",
"deprecation": {
"replacement": "spring.kafka.producer.ssl.key-store-location",
"level": "error"
}
},
{
"name": "spring.kafka.producer.ssl.keystore-password",
"type": "java.lang.String",
"description": "Store password for the key store file.",
"deprecation": {
"replacement": "spring.kafka.producer.ssl.key-store-password",
"level": "error"
}
},
{
"name": "spring.kafka.producer.ssl.truststore-location",
"type": "org.springframework.core.io.Resource",
"description": "Location of the trust store file.",
"deprecation": {
"replacement": "spring.kafka.producer.ssl.trust-store-location",
"level": "error"
}
},
{
"name": "spring.kafka.producer.ssl.truststore-password",
"type": "java.lang.String",
"description": "Store password for the trust store file.",
"deprecation": {
"replacement": "spring.kafka.producer.ssl.trust-store-password",
"level": "error"
}
},
{
"name": "spring.kafka.ssl.keystore-location",
"type": "org.springframework.core.io.Resource",
"description": "Location of the key store file.",
"deprecation": {
"replacement": "spring.kafka.ssl.key-store-location",
"level": "error"
}
},
{
"name": "spring.kafka.ssl.keystore-password",
"type": "java.lang.String",
"description": "Store password for the key store file.",
"deprecation": {
"replacement": "spring.kafka.ssl.key-store-password",
"level": "error"
}
},
{
"name": "spring.kafka.ssl.truststore-location",
"type": "org.springframework.core.io.Resource",
"description": "Location of the trust store file.",
"deprecation": {
"replacement": "spring.kafka.ssl.trust-store-location",
"level": "error"
}
},
{
"name": "spring.kafka.ssl.truststore-password",
"type": "java.lang.String",
"description": "Store password for the trust store file.",
"deprecation": {
"replacement": "spring.kafka.ssl.trust-store-password",
"level": "error"
}
},
{
"name": "spring.kafka.streams.cache-max-bytes-buffering",
"type": "java.lang.Integer",
"deprecation": {
"replacement": "spring.kafka.streams.state-store-cache-max-size",
"level": "error"
}
},
{
"name": "spring.kafka.streams.cache-max-size-buffering",
"type": "java.lang.Integer",
"deprecation": {
"replacement": "spring.kafka.streams.state-store-cache-max-size",
"level": "error",
"since": "3.1.0"
}
},
{
"name": "spring.mustache.prefix",
"defaultValue": "classpath:/templates/"

View File

@ -58,7 +58,6 @@ org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration
org.springframework.boot.autoconfigure.integration.IntegrationAutoConfiguration
org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration
org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration
org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration
org.springframework.boot.autoconfigure.ldap.embedded.EmbeddedLdapAutoConfiguration
org.springframework.boot.autoconfigure.ldap.LdapAutoConfiguration
org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration

View File

@ -2005,6 +2005,7 @@ bom {
"spring-boot-jetty",
"spring-boot-jms",
"spring-boot-jsonb",
"spring-boot-kafka",
"spring-boot-liquibase",
"spring-boot-loader",
"spring-boot-loader-classic",

View File

@ -90,6 +90,7 @@ dependencies {
autoConfiguration(project(path: ":spring-boot-project:spring-boot-jetty", configuration: "autoConfigurationMetadata"))
autoConfiguration(project(path: ":spring-boot-project:spring-boot-jms", configuration: "autoConfigurationMetadata"))
autoConfiguration(project(path: ":spring-boot-project:spring-boot-jsonb", configuration: "autoConfigurationMetadata"))
autoConfiguration(project(path: ":spring-boot-project:spring-boot-kafka", configuration: "autoConfigurationMetadata"))
autoConfiguration(project(path: ":spring-boot-project:spring-boot-liquibase", configuration: "autoConfigurationMetadata"))
autoConfiguration(project(path: ":spring-boot-project:spring-boot-mail", configuration: "autoConfigurationMetadata"))
autoConfiguration(project(path: ":spring-boot-project:spring-boot-reactor-netty", configuration: "autoConfigurationMetadata"))
@ -116,6 +117,7 @@ dependencies {
configurationProperties(project(path: ":spring-boot-project:spring-boot-jdbc", configuration: "configurationPropertiesMetadata"))
configurationProperties(project(path: ":spring-boot-project:spring-boot-jetty", configuration: "configurationPropertiesMetadata"))
configurationProperties(project(path: ":spring-boot-project:spring-boot-jms", configuration: "configurationPropertiesMetadata"))
configurationProperties(project(path: ":spring-boot-project:spring-boot-kafka", configuration: "configurationPropertiesMetadata"))
configurationProperties(project(path: ":spring-boot-project:spring-boot-liquibase", configuration: "configurationPropertiesMetadata"))
configurationProperties(project(path: ":spring-boot-project:spring-boot-mail", configuration: "configurationPropertiesMetadata"))
configurationProperties(project(path: ":spring-boot-project:spring-boot-reactor-netty", configuration: "configurationPropertiesMetadata"))

View File

@ -0,0 +1,40 @@
/*
* Copyright 2012-present the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the License);
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
plugins {
id "java-library"
id "org.springframework.boot.auto-configuration"
id "org.springframework.boot.configuration-properties"
id "org.springframework.boot.deployed"
id "org.springframework.boot.optional-dependencies"
}
description = "Spring Boot Kafka"
dependencies {
api(project(":spring-boot-project:spring-boot"))
api("org.springframework.kafka:spring-kafka")
optional(project(":spring-boot-project:spring-boot-autoconfigure"))
optional("org.apache.kafka:kafka-streams")
testImplementation(project(":spring-boot-project:spring-boot-test"))
testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))
testImplementation("org.springframework.kafka:spring-kafka-test")
testRuntimeOnly("ch.qos.logback:logback-classic")
}

View File

@ -14,13 +14,13 @@
* limitations under the License.
*/
package org.springframework.boot.autoconfigure.kafka;
package org.springframework.boot.kafka.autoconfigure;
import java.time.Duration;
import java.util.function.Function;
import org.springframework.boot.autoconfigure.kafka.KafkaProperties.Listener;
import org.springframework.boot.context.properties.PropertyMapper;
import org.springframework.boot.kafka.autoconfigure.KafkaProperties.Listener;
import org.springframework.core.task.SimpleAsyncTaskExecutor;
import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
import org.springframework.kafka.core.ConsumerFactory;
@ -49,7 +49,7 @@ import org.springframework.kafka.transaction.KafkaAwareTransactionManager;
* @author Eddú Meléndez
* @author Thomas Kåsene
* @author Moritz Halbritter
* @since 1.5.0
* @since 4.0.0
*/
public class ConcurrentKafkaListenerContainerFactoryConfigurer {
@ -130,7 +130,6 @@ public class ConcurrentKafkaListenerContainerFactoryConfigurer {
/**
* Set the {@link ConsumerAwareRebalanceListener} to use.
* @param rebalanceListener the rebalance listener.
* @since 2.2
*/
void setRebalanceListener(ConsumerAwareRebalanceListener rebalanceListener) {
this.rebalanceListener = rebalanceListener;
@ -139,7 +138,6 @@ public class ConcurrentKafkaListenerContainerFactoryConfigurer {
/**
* Set the {@link CommonErrorHandler} to use.
* @param commonErrorHandler the error handler.
* @since 2.6.0
*/
public void setCommonErrorHandler(CommonErrorHandler commonErrorHandler) {
this.commonErrorHandler = commonErrorHandler;

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.springframework.boot.autoconfigure.kafka;
package org.springframework.boot.kafka.autoconfigure;
import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
@ -22,7 +22,7 @@ import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
* Callback interface for customizing {@code DefaultKafkaConsumerFactory} beans.
*
* @author Stephane Nicoll
* @since 2.3.0
* @since 4.0.0
*/
@FunctionalInterface
public interface DefaultKafkaConsumerFactoryCustomizer {

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.springframework.boot.autoconfigure.kafka;
package org.springframework.boot.kafka.autoconfigure;
import org.springframework.kafka.core.DefaultKafkaProducerFactory;
@ -22,7 +22,7 @@ import org.springframework.kafka.core.DefaultKafkaProducerFactory;
* Callback interface for customizing {@code DefaultKafkaProducerFactory} beans.
*
* @author Stephane Nicoll
* @since 2.3.0
* @since 4.0.0
*/
@FunctionalInterface
public interface DefaultKafkaProducerFactoryCustomizer {

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.springframework.boot.autoconfigure.kafka;
package org.springframework.boot.kafka.autoconfigure;
import java.util.function.Function;

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.springframework.boot.autoconfigure.kafka;
package org.springframework.boot.kafka.autoconfigure;
import java.io.IOException;
import java.time.Duration;
@ -36,11 +36,11 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.condition.ConditionalOnSingleCandidate;
import org.springframework.boot.autoconfigure.kafka.KafkaConnectionDetails.Configuration;
import org.springframework.boot.autoconfigure.kafka.KafkaProperties.Jaas;
import org.springframework.boot.autoconfigure.kafka.KafkaProperties.Retry.Topic.Backoff;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.context.properties.PropertyMapper;
import org.springframework.boot.kafka.autoconfigure.KafkaConnectionDetails.Configuration;
import org.springframework.boot.kafka.autoconfigure.KafkaProperties.Jaas;
import org.springframework.boot.kafka.autoconfigure.KafkaProperties.Retry.Topic.Backoff;
import org.springframework.boot.ssl.SslBundle;
import org.springframework.boot.ssl.SslBundles;
import org.springframework.context.annotation.Bean;
@ -76,7 +76,7 @@ import org.springframework.util.StringUtils;
* @author Phillip Webb
* @author Andy Wilkinson
* @author Scott Frederick
* @since 1.5.0
* @since 4.0.0
*/
@AutoConfiguration
@ConditionalOnClass(KafkaTemplate.class)

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.springframework.boot.autoconfigure.kafka;
package org.springframework.boot.kafka.autoconfigure;
import java.util.List;
@ -27,7 +27,7 @@ import org.springframework.boot.ssl.SslBundle;
* @author Moritz Halbritter
* @author Andy Wilkinson
* @author Phillip Webb
* @since 3.1.0
* @since 4.0.0
*/
public interface KafkaConnectionDetails extends ConnectionDetails {
@ -40,7 +40,6 @@ public interface KafkaConnectionDetails extends ConnectionDetails {
/**
* Returns the SSL bundle.
* @return the SSL bundle
* @since 3.5.0
*/
default SslBundle getSslBundle() {
return null;
@ -49,7 +48,6 @@ public interface KafkaConnectionDetails extends ConnectionDetails {
/**
* Returns the security protocol.
* @return the security protocol
* @since 3.5.0
*/
default String getSecurityProtocol() {
return null;
@ -58,7 +56,6 @@ public interface KafkaConnectionDetails extends ConnectionDetails {
/**
* Returns the consumer configuration.
* @return the consumer configuration
* @since 3.5.0
*/
default Configuration getConsumer() {
return Configuration.of(getBootstrapServers(), getSslBundle(), getSecurityProtocol());
@ -67,7 +64,6 @@ public interface KafkaConnectionDetails extends ConnectionDetails {
/**
* Returns the producer configuration.
* @return the producer configuration
* @since 3.5.0
*/
default Configuration getProducer() {
return Configuration.of(getBootstrapServers(), getSslBundle(), getSecurityProtocol());
@ -76,7 +72,6 @@ public interface KafkaConnectionDetails extends ConnectionDetails {
/**
* Returns the admin configuration.
* @return the admin configuration
* @since 3.5.0
*/
default Configuration getAdmin() {
return Configuration.of(getBootstrapServers(), getSslBundle(), getSecurityProtocol());
@ -85,7 +80,6 @@ public interface KafkaConnectionDetails extends ConnectionDetails {
/**
* Returns the Kafka Streams configuration.
* @return the Kafka Streams configuration
* @since 3.5.0
*/
default Configuration getStreams() {
return Configuration.of(getBootstrapServers(), getSslBundle(), getSecurityProtocol());

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.springframework.boot.autoconfigure.kafka;
package org.springframework.boot.kafka.autoconfigure;
import java.io.IOException;
import java.time.Duration;
@ -59,7 +59,7 @@ import org.springframework.util.unit.DataSize;
* @author Andy Wilkinson
* @author Scott Frederick
* @author Yanming Zhou
* @since 1.5.0
* @since 4.0.0
*/
@ConfigurationProperties("spring.kafka")
public class KafkaProperties {

View File

@ -14,11 +14,11 @@
* limitations under the License.
*/
package org.springframework.boot.autoconfigure.kafka;
package org.springframework.boot.kafka.autoconfigure;
import java.util.List;
import org.springframework.boot.autoconfigure.kafka.KafkaProperties.Ssl;
import org.springframework.boot.kafka.autoconfigure.KafkaProperties.Ssl;
import org.springframework.boot.ssl.SslBundle;
import org.springframework.boot.ssl.SslBundles;
import org.springframework.util.Assert;

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.springframework.boot.autoconfigure.kafka;
package org.springframework.boot.kafka.autoconfigure;
import java.io.IOException;
import java.security.KeyStore;
@ -34,7 +34,7 @@ import org.springframework.boot.ssl.SslBundle;
*
* @author Andy Wilkinson
* @author Scott Frederick
* @since 3.2.0
* @since 4.0.0
*/
public class SslBundleSslEngineFactory implements SslEngineFactory {

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.springframework.boot.autoconfigure.kafka;
package org.springframework.boot.kafka.autoconfigure;
import org.springframework.kafka.config.StreamsBuilderFactoryBean;
@ -22,7 +22,7 @@ import org.springframework.kafka.config.StreamsBuilderFactoryBean;
* Callback interface for customizing {@code StreamsBuilderFactoryBean} beans.
*
* @author Eddú Meléndez
* @since 2.3.2
* @since 4.0.0
*/
@FunctionalInterface
public interface StreamsBuilderFactoryBeanCustomizer {

View File

@ -17,4 +17,4 @@
/**
* Auto-configuration for Apache Kafka.
*/
package org.springframework.boot.autoconfigure.kafka;
package org.springframework.boot.kafka.autoconfigure;

View File

@ -0,0 +1,247 @@
{
"properties": [
{
"name": "spring.kafka.admin.ssl.keystore-location",
"type": "org.springframework.core.io.Resource",
"description": "Location of the key store file.",
"deprecation": {
"replacement": "spring.kafka.admin.ssl.key-store-location",
"level": "error"
}
},
{
"name": "spring.kafka.admin.ssl.keystore-password",
"type": "java.lang.String",
"description": "Store password for the key store file.",
"deprecation": {
"replacement": "spring.kafka.admin.ssl.key-store-password",
"level": "error"
}
},
{
"name": "spring.kafka.admin.ssl.truststore-location",
"type": "org.springframework.core.io.Resource",
"description": "Location of the trust store file.",
"deprecation": {
"replacement": "spring.kafka.admin.ssl.trust-store-location",
"level": "error"
}
},
{
"name": "spring.kafka.admin.ssl.truststore-password",
"type": "java.lang.String",
"description": "Store password for the trust store file.",
"deprecation": {
"replacement": "spring.kafka.admin.ssl.trust-store-password",
"level": "error"
}
},
{
"name": "spring.kafka.consumer.ssl.keystore-location",
"type": "org.springframework.core.io.Resource",
"description": "Location of the key store file.",
"deprecation": {
"replacement": "spring.kafka.consumer.ssl.key-store-location",
"level": "error"
}
},
{
"name": "spring.kafka.consumer.ssl.keystore-password",
"type": "java.lang.String",
"description": "Store password for the key store file.",
"deprecation": {
"replacement": "spring.kafka.consumer.ssl.key-store-password",
"level": "error"
}
},
{
"name": "spring.kafka.consumer.ssl.truststore-location",
"type": "org.springframework.core.io.Resource",
"description": "Location of the trust store file.",
"deprecation": {
"replacement": "spring.kafka.consumer.ssl.trust-store-location",
"level": "error"
}
},
{
"name": "spring.kafka.consumer.ssl.truststore-password",
"type": "java.lang.String",
"description": "Store password for the trust store file.",
"deprecation": {
"replacement": "spring.kafka.consumer.ssl.trust-store-password",
"level": "error"
}
},
{
"name": "spring.kafka.listener.only-log-record-metadata",
"type": "java.lang.Boolean",
"defaultValue": true,
"description": "Whether to suppress the entire record from being written to the log when retries are being attempted.",
"deprecation": {
"reason": "Use KafkaUtils#setConsumerRecordFormatter instead.",
"level": "error"
}
},
{
"name": "spring.kafka.producer.ssl.keystore-location",
"type": "org.springframework.core.io.Resource",
"description": "Location of the key store file.",
"deprecation": {
"replacement": "spring.kafka.producer.ssl.key-store-location",
"level": "error"
}
},
{
"name": "spring.kafka.producer.ssl.keystore-password",
"type": "java.lang.String",
"description": "Store password for the key store file.",
"deprecation": {
"replacement": "spring.kafka.producer.ssl.key-store-password",
"level": "error"
}
},
{
"name": "spring.kafka.producer.ssl.truststore-location",
"type": "org.springframework.core.io.Resource",
"description": "Location of the trust store file.",
"deprecation": {
"replacement": "spring.kafka.producer.ssl.trust-store-location",
"level": "error"
}
},
{
"name": "spring.kafka.producer.ssl.truststore-password",
"type": "java.lang.String",
"description": "Store password for the trust store file.",
"deprecation": {
"replacement": "spring.kafka.producer.ssl.trust-store-password",
"level": "error"
}
},
{
"name": "spring.kafka.ssl.keystore-location",
"type": "org.springframework.core.io.Resource",
"description": "Location of the key store file.",
"deprecation": {
"replacement": "spring.kafka.ssl.key-store-location",
"level": "error"
}
},
{
"name": "spring.kafka.ssl.keystore-password",
"type": "java.lang.String",
"description": "Store password for the key store file.",
"deprecation": {
"replacement": "spring.kafka.ssl.key-store-password",
"level": "error"
}
},
{
"name": "spring.kafka.ssl.truststore-location",
"type": "org.springframework.core.io.Resource",
"description": "Location of the trust store file.",
"deprecation": {
"replacement": "spring.kafka.ssl.trust-store-location",
"level": "error"
}
},
{
"name": "spring.kafka.ssl.truststore-password",
"type": "java.lang.String",
"description": "Store password for the trust store file.",
"deprecation": {
"replacement": "spring.kafka.ssl.trust-store-password",
"level": "error"
}
},
{
"name": "spring.kafka.streams.cache-max-bytes-buffering",
"type": "java.lang.Integer",
"deprecation": {
"replacement": "spring.kafka.streams.state-store-cache-max-size",
"level": "error"
}
},
{
"name": "spring.kafka.streams.cache-max-size-buffering",
"type": "java.lang.Integer",
"deprecation": {
"replacement": "spring.kafka.streams.state-store-cache-max-size",
"level": "error",
"since": "3.1.0"
}
}
],
"hints": [
{
"name": "spring.kafka.consumer.auto-offset-reset",
"values": [
{
"value": "earliest",
"description": "Automatically reset the offset to the earliest offset."
},
{
"value": "latest",
"description": "Automatically reset the offset to the latest offset."
},
{
"value": "none",
"description": "Throw exception to the consumer if no previous offset is found for the consumer's group."
},
{
"value": "exception",
"description": "Throw exception to the consumer."
}
],
"providers": [
{
"name": "any"
}
]
},
{
"name": "spring.kafka.consumer.key-deserializer",
"providers": [
{
"name": "handle-as",
"parameters": {
"target": "org.apache.kafka.common.serialization.Deserializer"
}
}
]
},
{
"name": "spring.kafka.consumer.value-deserializer",
"providers": [
{
"name": "handle-as",
"parameters": {
"target": "org.apache.kafka.common.serialization.Deserializer"
}
}
]
},
{
"name": "spring.kafka.producer.key-serializer",
"providers": [
{
"name": "handle-as",
"parameters": {
"target": "org.apache.kafka.common.serialization.Serializer"
}
}
]
},
{
"name": "spring.kafka.producer.value-serializer",
"providers": [
{
"name": "handle-as",
"parameters": {
"target": "org.apache.kafka.common.serialization.Serializer"
}
}
]
}
]
}

View File

@ -0,0 +1 @@
org.springframework.boot.kafka.autoconfigure.KafkaAutoConfiguration

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.springframework.boot.autoconfigure.kafka;
package org.springframework.boot.kafka.autoconfigure;
import java.time.Duration;
import java.util.function.Function;

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.springframework.boot.autoconfigure.kafka;
package org.springframework.boot.kafka.autoconfigure;
import java.util.ArrayList;
import java.util.List;

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.springframework.boot.autoconfigure.kafka;
package org.springframework.boot.kafka.autoconfigure;
import java.io.File;
import java.time.Duration;

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.springframework.boot.autoconfigure.kafka;
package org.springframework.boot.kafka.autoconfigure;
import java.util.Collections;
import java.util.Map;
@ -22,11 +22,11 @@ import java.util.Map;
import org.apache.kafka.common.config.SslConfigs;
import org.junit.jupiter.api.Test;
import org.springframework.boot.autoconfigure.kafka.KafkaProperties.Admin;
import org.springframework.boot.autoconfigure.kafka.KafkaProperties.Cleanup;
import org.springframework.boot.autoconfigure.kafka.KafkaProperties.IsolationLevel;
import org.springframework.boot.autoconfigure.kafka.KafkaProperties.Listener;
import org.springframework.boot.context.properties.source.MutuallyExclusiveConfigurationPropertiesException;
import org.springframework.boot.kafka.autoconfigure.KafkaProperties.Admin;
import org.springframework.boot.kafka.autoconfigure.KafkaProperties.Cleanup;
import org.springframework.boot.kafka.autoconfigure.KafkaProperties.IsolationLevel;
import org.springframework.boot.kafka.autoconfigure.KafkaProperties.Listener;
import org.springframework.core.io.ClassPathResource;
import org.springframework.kafka.core.CleanupConfig;
import org.springframework.kafka.core.KafkaAdmin;

View File

@ -31,6 +31,7 @@ dependencies {
dockerTestImplementation(project(":spring-boot-project:spring-boot-flyway"))
dockerTestImplementation(project(":spring-boot-project:spring-boot-jdbc"))
dockerTestImplementation(project(":spring-boot-project:spring-boot-kafka"))
dockerTestImplementation(project(":spring-boot-project:spring-boot-liquibase"))
dockerTestImplementation(project(":spring-boot-project:spring-boot-test"))
dockerTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support-docker"))
@ -77,6 +78,7 @@ dependencies {
optional(project(":spring-boot-project:spring-boot-elasticsearch"))
optional(project(":spring-boot-project:spring-boot-flyway"))
optional(project(":spring-boot-project:spring-boot-jdbc"))
optional(project(":spring-boot-project:spring-boot-kafka"))
optional(project(":spring-boot-project:spring-boot-liquibase"))
optional(project(":spring-boot-project:spring-boot-tx"))
optional("org.springframework:spring-test")

View File

@ -28,7 +28,7 @@ import org.testcontainers.kafka.KafkaContainer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration;
import org.springframework.boot.kafka.autoconfigure.KafkaAutoConfiguration;
import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
import org.springframework.boot.testsupport.container.TestImage;
import org.springframework.context.annotation.Bean;

View File

@ -28,7 +28,7 @@ import org.testcontainers.kafka.ConfluentKafkaContainer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration;
import org.springframework.boot.kafka.autoconfigure.KafkaAutoConfiguration;
import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
import org.springframework.boot.testsupport.container.TestImage;
import org.springframework.context.annotation.Bean;

View File

@ -28,7 +28,7 @@ import org.testcontainers.junit.jupiter.Testcontainers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration;
import org.springframework.boot.kafka.autoconfigure.KafkaAutoConfiguration;
import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
import org.springframework.boot.testsupport.container.TestImage;
import org.springframework.context.annotation.Bean;

View File

@ -28,7 +28,7 @@ import org.testcontainers.redpanda.RedpandaContainer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration;
import org.springframework.boot.kafka.autoconfigure.KafkaAutoConfiguration;
import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
import org.springframework.boot.testsupport.container.TestImage;
import org.springframework.context.annotation.Bean;

View File

@ -20,7 +20,7 @@ import java.util.List;
import org.testcontainers.kafka.KafkaContainer;
import org.springframework.boot.autoconfigure.kafka.KafkaConnectionDetails;
import org.springframework.boot.kafka.autoconfigure.KafkaConnectionDetails;
import org.springframework.boot.ssl.SslBundle;
import org.springframework.boot.testcontainers.service.connection.ContainerConnectionDetailsFactory;
import org.springframework.boot.testcontainers.service.connection.ContainerConnectionSource;

View File

@ -20,7 +20,7 @@ import java.util.List;
import org.testcontainers.kafka.ConfluentKafkaContainer;
import org.springframework.boot.autoconfigure.kafka.KafkaConnectionDetails;
import org.springframework.boot.kafka.autoconfigure.KafkaConnectionDetails;
import org.springframework.boot.ssl.SslBundle;
import org.springframework.boot.testcontainers.service.connection.ContainerConnectionDetailsFactory;
import org.springframework.boot.testcontainers.service.connection.ContainerConnectionSource;

View File

@ -20,7 +20,7 @@ import java.util.List;
import org.testcontainers.containers.KafkaContainer;
import org.springframework.boot.autoconfigure.kafka.KafkaConnectionDetails;
import org.springframework.boot.kafka.autoconfigure.KafkaConnectionDetails;
import org.springframework.boot.ssl.SslBundle;
import org.springframework.boot.testcontainers.service.connection.ContainerConnectionDetailsFactory;
import org.springframework.boot.testcontainers.service.connection.ContainerConnectionSource;

View File

@ -20,7 +20,7 @@ import java.util.List;
import org.testcontainers.redpanda.RedpandaContainer;
import org.springframework.boot.autoconfigure.kafka.KafkaConnectionDetails;
import org.springframework.boot.kafka.autoconfigure.KafkaConnectionDetails;
import org.springframework.boot.ssl.SslBundle;
import org.springframework.boot.testcontainers.service.connection.ContainerConnectionDetailsFactory;
import org.springframework.boot.testcontainers.service.connection.ContainerConnectionSource;

View File

@ -40,7 +40,7 @@ dependencies {
dockerTestImplementation("org.testcontainers:kafka")
implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-json"))
implementation("org.springframework.kafka:spring-kafka")
implementation(project(":spring-boot-project:spring-boot-kafka"))
testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test"))
testImplementation("org.awaitility:awaitility")