Skip to content

Commit f983ae2

Browse files
committed
Autoconfigure only AMQP 1.0 or 0.9
Signed-off-by: Eddú Meléndez <[email protected]>
1 parent a3913a1 commit f983ae2

File tree

8 files changed

+27
-8
lines changed

8 files changed

+27
-8
lines changed

module/spring-boot-amqp/build.gradle

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ description = "Spring Boot AMQP"
2828
dependencies {
2929
api(project(":core:spring-boot"))
3030
api("org.springframework:spring-messaging")
31-
api("org.springframework.amqp:spring-rabbit")
31+
api("org.springframework.amqp:spring-rabbitmq-client")
3232

3333
compileOnly("com.fasterxml.jackson.core:jackson-annotations")
3434

@@ -41,7 +41,6 @@ dependencies {
4141
optional(project(":module:spring-boot-metrics"))
4242
optional("io.micrometer:micrometer-core")
4343
optional("org.springframework.amqp:spring-rabbit-stream")
44-
optional("org.springframework.amqp:spring-rabbitmq-client")
4544
optional("org.testcontainers:rabbitmq")
4645

4746
dockerTestImplementation(project(":test-support:spring-boot-docker-test-support"))

module/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/autoconfigure/RabbitAmqpAutoConfiguration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ RabbitConnectionDetails rabbitConnectionDetails(ObjectProvider<SslBundles> sslBu
6565
return new PropertiesRabbitConnectionDetails(this.properties, sslBundles.getIfAvailable());
6666
}
6767

68-
@Bean(name = "rabbitAmqpListenerContainerFactory")
69-
@ConditionalOnMissingBean(name = "rabbitAmqpListenerContainerFactory")
68+
@Bean(name = "rabbitListenerContainerFactory")
69+
@ConditionalOnMissingBean(name = "rabbitListenerContainerFactory")
7070
RabbitAmqpListenerContainerFactory rabbitAmqpListenerContainerFactory(AmqpConnectionFactory connectionFactory,
7171
ObjectProvider<ContainerCustomizer<RabbitAmqpListenerContainer>> amqpContainerCustomizer,
7272
ObjectProvider<RabbitRetryTemplateCustomizer> retryTemplateCustomizers,

module/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/autoconfigure/RabbitAutoConfiguration.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.springframework.boot.autoconfigure.condition.ConditionalOnBooleanProperty;
3737
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3838
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
39+
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
3940
import org.springframework.boot.autoconfigure.condition.ConditionalOnSingleCandidate;
4041
import org.springframework.boot.context.properties.EnableConfigurationProperties;
4142
import org.springframework.boot.ssl.SslBundles;
@@ -71,10 +72,13 @@
7172
* @author Moritz Halbritter
7273
* @author Andy Wilkinson
7374
* @author Scott Frederick
75+
* @author Eddú Meléndez
7476
* @since 4.0.0
7577
*/
7678
@AutoConfiguration
7779
@ConditionalOnClass({ RabbitTemplate.class, Channel.class })
80+
@ConditionalOnMissingClass({ "com.rabbitmq.client.amqp.Connection",
81+
"org.springframework.amqp.rabbitmq.client.RabbitAmqpTemplate" })
7882
@EnableConfigurationProperties(RabbitProperties.class)
7983
@Import({ RabbitAnnotationDrivenConfiguration.class, RabbitStreamConfiguration.class })
8084
public final class RabbitAutoConfiguration {

module/spring-boot-amqp/src/test/java/org/springframework/boot/amqp/autoconfigure/RabbitAutoConfigurationTests.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,15 @@
115115
* @author Phillip Webb
116116
* @author Scott Frederick
117117
* @author Yanming Zhou
118+
* @author Eddú Meléndez
118119
*/
119120
@ExtendWith(OutputCaptureExtension.class)
120121
class RabbitAutoConfigurationTests {
121122

122123
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
123124
.withConfiguration(AutoConfigurations.of(RabbitAutoConfiguration.class, SslAutoConfiguration.class))
124-
.withClassLoader(new FilteredClassLoader("org.springframework.rabbit.stream")); // gh-38750
125+
.withClassLoader(new FilteredClassLoader("org.springframework.rabbit.stream", "com.rabbitmq.client.amqp",
126+
"org.springframework.amqp.rabbitmq.client")); // gh-38750
125127

126128
@Test
127129
void testDefaultRabbitConfiguration() {

module/spring-boot-amqp/src/test/java/org/springframework/boot/amqp/autoconfigure/RabbitStreamConfigurationTests.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry;
3434
import org.springframework.amqp.support.converter.MessageConverter;
3535
import org.springframework.boot.autoconfigure.AutoConfigurations;
36+
import org.springframework.boot.test.context.FilteredClassLoader;
3637
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
3738
import org.springframework.context.annotation.Bean;
3839
import org.springframework.context.annotation.Configuration;
@@ -60,7 +61,9 @@
6061
class RabbitStreamConfigurationTests {
6162

6263
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
63-
.withConfiguration(AutoConfigurations.of(RabbitAutoConfiguration.class));
64+
.withConfiguration(AutoConfigurations.of(RabbitAutoConfiguration.class))
65+
.withClassLoader(
66+
new FilteredClassLoader("com.rabbitmq.client.amqp", "org.springframework.amqp.rabbitmq.client"));
6467

6568
@Test
6669
@SuppressWarnings("unchecked")

module/spring-boot-amqp/src/test/java/org/springframework/boot/amqp/autoconfigure/health/RabbitHealthContributorAutoConfigurationTests.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.springframework.boot.amqp.health.RabbitHealthIndicator;
2323
import org.springframework.boot.autoconfigure.AutoConfigurations;
2424
import org.springframework.boot.health.autoconfigure.contributor.HealthContributorAutoConfiguration;
25+
import org.springframework.boot.test.context.FilteredClassLoader;
2526
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
2627

2728
import static org.assertj.core.api.Assertions.assertThat;
@@ -30,12 +31,15 @@
3031
* Tests for {@link RabbitHealthContributorAutoConfiguration}.
3132
*
3233
* @author Phillip Webb
34+
* @author Eddú Meléndez
3335
*/
3436
class RabbitHealthContributorAutoConfigurationTests {
3537

3638
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
3739
.withConfiguration(AutoConfigurations.of(RabbitAutoConfiguration.class,
38-
RabbitHealthContributorAutoConfiguration.class, HealthContributorAutoConfiguration.class));
40+
RabbitHealthContributorAutoConfiguration.class, HealthContributorAutoConfiguration.class))
41+
.withClassLoader(
42+
new FilteredClassLoader("com.rabbitmq.client.amqp", "org.springframework.amqp.rabbitmq.client"));
3943

4044
@Test
4145
void runShouldCreateIndicator() {

module/spring-boot-amqp/src/test/java/org/springframework/boot/amqp/autoconfigure/metrics/RabbitMetricsAutoConfigurationMeterBinderCycleIntegrationTests.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.springframework.amqp.rabbit.core.RabbitTemplate;
2525
import org.springframework.boot.amqp.autoconfigure.RabbitAutoConfiguration;
2626
import org.springframework.boot.metrics.autoconfigure.MetricsAutoConfiguration;
27+
import org.springframework.boot.testsupport.classpath.ClassPathExclusions;
2728
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
2829
import org.springframework.context.annotation.Bean;
2930
import org.springframework.context.annotation.Configuration;
@@ -36,8 +37,10 @@
3637
* dependency cycle when used with {@link MeterBinder}.
3738
*
3839
* @author Phillip Webb
40+
* @author Eddú Meléndez
3941
* @see <a href="https://github.com/spring-projects/spring-boot/issues/30636">gh-30636</a>
4042
*/
43+
@ClassPathExclusions(files = "spring-rabbitmq-client-*.jar", packages = "com.rabbitmq.client.amqp")
4144
class RabbitMetricsAutoConfigurationMeterBinderCycleIntegrationTests {
4245

4346
@Test

module/spring-boot-amqp/src/test/java/org/springframework/boot/amqp/autoconfigure/metrics/RabbitMetricsAutoConfigurationTests.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.springframework.boot.amqp.autoconfigure.RabbitAutoConfiguration;
2626
import org.springframework.boot.autoconfigure.AutoConfigurations;
2727
import org.springframework.boot.metrics.autoconfigure.MetricsAutoConfiguration;
28+
import org.springframework.boot.test.context.FilteredClassLoader;
2829
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
2930
import org.springframework.context.annotation.Bean;
3031
import org.springframework.context.annotation.Configuration;
@@ -35,14 +36,17 @@
3536
* Tests for {@link RabbitMetricsAutoConfiguration}.
3637
*
3738
* @author Stephane Nicoll
39+
* @author Eddú Meléndez
3840
*/
3941
class RabbitMetricsAutoConfigurationTests {
4042

4143
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
4244
.withBean(SimpleMeterRegistry.class)
4345
.withConfiguration(AutoConfigurations.of(RabbitAutoConfiguration.class, RabbitMetricsAutoConfiguration.class,
4446
MetricsAutoConfiguration.class))
45-
.withPropertyValues("management.metrics.use-global-registry=false");
47+
.withPropertyValues("management.metrics.use-global-registry=false")
48+
.withClassLoader(
49+
new FilteredClassLoader("com.rabbitmq.client.amqp", "org.springframework.amqp.rabbitmq.client"));
4650

4751
@Test
4852
void autoConfiguredConnectionFactoryIsInstrumented() {

0 commit comments

Comments
 (0)