Commit 75937f5b authored by Madhura Bhave's avatar Madhura Bhave

Make jmsListenerContainerFactory @ConditionalOnSingleCandidate

Closes gh-12700
parent 59b5c544
...@@ -22,6 +22,7 @@ import org.springframework.beans.factory.ObjectProvider; ...@@ -22,6 +22,7 @@ import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnJndi; import org.springframework.boot.autoconfigure.condition.ConditionalOnJndi;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnSingleCandidate;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.jms.annotation.EnableJms; import org.springframework.jms.annotation.EnableJms;
...@@ -73,6 +74,7 @@ class JmsAnnotationDrivenConfiguration { ...@@ -73,6 +74,7 @@ class JmsAnnotationDrivenConfiguration {
} }
@Bean @Bean
@ConditionalOnSingleCandidate(ConnectionFactory.class)
@ConditionalOnMissingBean(name = "jmsListenerContainerFactory") @ConditionalOnMissingBean(name = "jmsListenerContainerFactory")
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory( public DefaultJmsListenerContainerFactory jmsListenerContainerFactory(
DefaultJmsListenerContainerFactoryConfigurer configurer, DefaultJmsListenerContainerFactoryConfigurer configurer,
......
...@@ -149,6 +149,13 @@ public class JmsAutoConfigurationTests { ...@@ -149,6 +149,13 @@ public class JmsAutoConfigurationTests {
SimpleJmsListenerContainerFactory.class)); SimpleJmsListenerContainerFactory.class));
} }
@Test
public void jmsListenerContainerFactoryWhenMultipleConnectionFactoryBeansShouldBackOff() {
this.contextRunner.withUserConfiguration(TestConfiguration10.class)
.run((context) -> assertThat(context)
.doesNotHaveBean(JmsListenerContainerFactory.class));
}
@Test @Test
public void testJmsListenerContainerFactoryWithCustomSettings() { public void testJmsListenerContainerFactoryWithCustomSettings() {
this.contextRunner.withUserConfiguration(EnableJmsConfiguration.class) this.contextRunner.withUserConfiguration(EnableJmsConfiguration.class)
...@@ -572,6 +579,21 @@ public class JmsAutoConfigurationTests { ...@@ -572,6 +579,21 @@ public class JmsAutoConfigurationTests {
} }
@Configuration
protected static class TestConfiguration10 {
@Bean
public ConnectionFactory connectionFactory1() {
return new ActiveMQConnectionFactory();
}
@Bean
public ConnectionFactory connectionFactory2() {
return new ActiveMQConnectionFactory();
}
}
@Configuration @Configuration
@EnableJms @EnableJms
protected static class EnableJmsConfiguration { protected static class EnableJmsConfiguration {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment