Skip to content

Commit 39b965e

Browse files
committed
Merge branch '2.1.x' into 2.2.x
Closes gh-20615
2 parents ef1f9b9 + f5761bd commit 39b965e

File tree

2 files changed

+29
-4
lines changed

2 files changed

+29
-4
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/kafka/KafkaAnnotationDrivenConfiguration.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2019 the original author or authors.
2+
* Copyright 2012-2020 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -26,6 +26,7 @@
2626
import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
2727
import org.springframework.kafka.config.KafkaListenerConfigUtils;
2828
import org.springframework.kafka.core.ConsumerFactory;
29+
import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
2930
import org.springframework.kafka.core.KafkaTemplate;
3031
import org.springframework.kafka.listener.AfterRollbackProcessor;
3132
import org.springframework.kafka.listener.BatchErrorHandler;
@@ -112,9 +113,10 @@ ConcurrentKafkaListenerContainerFactoryConfigurer kafkaListenerContainerFactoryC
112113
@ConditionalOnMissingBean(name = "kafkaListenerContainerFactory")
113114
ConcurrentKafkaListenerContainerFactory<?, ?> kafkaListenerContainerFactory(
114115
ConcurrentKafkaListenerContainerFactoryConfigurer configurer,
115-
ConsumerFactory<Object, Object> kafkaConsumerFactory) {
116+
ObjectProvider<ConsumerFactory<Object, Object>> kafkaConsumerFactory) {
116117
ConcurrentKafkaListenerContainerFactory<Object, Object> factory = new ConcurrentKafkaListenerContainerFactory<>();
117-
configurer.configure(factory, kafkaConsumerFactory);
118+
configurer.configure(factory, kafkaConsumerFactory
119+
.getIfAvailable(() -> new DefaultKafkaConsumerFactory<>(this.properties.buildConsumerProperties())));
118120
return factory;
119121
}
120122

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/kafka/KafkaAutoConfigurationTests.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2019 the original author or authors.
2+
* Copyright 2012-2020 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -50,6 +50,7 @@
5050
import org.springframework.kafka.config.KafkaListenerContainerFactory;
5151
import org.springframework.kafka.config.KafkaStreamsConfiguration;
5252
import org.springframework.kafka.config.StreamsBuilderFactoryBean;
53+
import org.springframework.kafka.core.ConsumerFactory;
5354
import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
5455
import org.springframework.kafka.core.DefaultKafkaProducerFactory;
5556
import org.springframework.kafka.core.KafkaAdmin;
@@ -569,6 +570,16 @@ void testConcurrentKafkaListenerContainerFactoryWithKafkaTemplate() {
569570
});
570571
}
571572

573+
@Test
574+
void testConcurrentKafkaListenerContainerFactoryWithCustomConsumerFactory() {
575+
this.contextRunner.withUserConfiguration(ConsumerFactoryConfiguration.class).run((context) -> {
576+
ConcurrentKafkaListenerContainerFactory<?, ?> kafkaListenerContainerFactory = context
577+
.getBean(ConcurrentKafkaListenerContainerFactory.class);
578+
assertThat(kafkaListenerContainerFactory.getConsumerFactory())
579+
.isNotSameAs(context.getBean(ConsumerFactoryConfiguration.class).consumerFactory);
580+
});
581+
}
582+
572583
@Configuration(proxyBeanMethods = false)
573584
static class MessageConverterConfiguration {
574585

@@ -633,6 +644,18 @@ AfterRollbackProcessor<Object, Object> afterRollbackProcessor() {
633644

634645
}
635646

647+
@Configuration(proxyBeanMethods = false)
648+
static class ConsumerFactoryConfiguration {
649+
650+
private final ConsumerFactory<String, Object> consumerFactory = mock(ConsumerFactory.class);
651+
652+
@Bean
653+
ConsumerFactory<String, Object> myConsumerFactory() {
654+
return this.consumerFactory;
655+
}
656+
657+
}
658+
636659
@Configuration(proxyBeanMethods = false)
637660
static class RecordInterceptorConfiguration {
638661

0 commit comments

Comments
 (0)