From 302a4212b5acc10466b4925d6023b0d30d88b52c Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Fri, 9 May 2025 09:02:06 +0100 Subject: [PATCH] Move code from spring-boot-actuator to spring-boot-amqp --- .../RabbitHealthContributorAutoConfiguration.java | 4 ++-- ...RabbitConnectionFactoryMetricsPostProcessor.java | 4 ++-- .../amqp/RabbitMetricsAutoConfiguration.java | 10 +++++----- ...bbitHealthContributorAutoConfigurationTests.java | 4 ++-- .../spring-boot-actuator/build.gradle | 1 - spring-boot-project/spring-boot-amqp/build.gradle | 5 +++++ .../amqp/actuate/health}/RabbitHealthIndicator.java | 4 ++-- .../boot/amqp/actuate/health}/package-info.java | 6 +++--- .../boot/amqp/actuate/metrics}/RabbitMetrics.java | 4 ++-- .../boot/amqp/actuate/metrics}/package-info.java | 6 +++--- .../actuate/health}/RabbitHealthIndicatorTests.java | 2 +- .../amqp/actuate/metrics}/RabbitMetricsTests.java | 4 ++-- src/checkstyle/import-control.xml | 13 +++++++++++++ 13 files changed, 42 insertions(+), 25 deletions(-) rename spring-boot-project/{spring-boot-actuator/src/main/java/org/springframework/boot/actuate/amqp => spring-boot-amqp/src/main/java/org/springframework/boot/amqp/actuate/health}/RabbitHealthIndicator.java (96%) rename spring-boot-project/{spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/amqp => spring-boot-amqp/src/main/java/org/springframework/boot/amqp/actuate/health}/package-info.java (77%) rename spring-boot-project/{spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/amqp => spring-boot-amqp/src/main/java/org/springframework/boot/amqp/actuate/metrics}/RabbitMetrics.java (96%) rename spring-boot-project/{spring-boot-actuator/src/main/java/org/springframework/boot/actuate/amqp => spring-boot-amqp/src/main/java/org/springframework/boot/amqp/actuate/metrics}/package-info.java (79%) rename spring-boot-project/{spring-boot-actuator/src/test/java/org/springframework/boot/actuate/amqp => spring-boot-amqp/src/test/java/org/springframework/boot/amqp/actuate/health}/RabbitHealthIndicatorTests.java (98%) rename spring-boot-project/{spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/amqp => spring-boot-amqp/src/test/java/org/springframework/boot/amqp/actuate/metrics}/RabbitMetricsTests.java (93%) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/amqp/RabbitHealthContributorAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/amqp/RabbitHealthContributorAutoConfiguration.java index 1017f64406..6ed0a89826 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/amqp/RabbitHealthContributorAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/amqp/RabbitHealthContributorAutoConfiguration.java @@ -18,10 +18,10 @@ package org.springframework.boot.actuate.autoconfigure.amqp; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; -import org.springframework.boot.actuate.amqp.RabbitHealthIndicator; import org.springframework.boot.actuate.autoconfigure.health.CompositeHealthContributorConfiguration; import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; import org.springframework.boot.actuate.health.HealthContributor; +import org.springframework.boot.amqp.actuate.health.RabbitHealthIndicator; import org.springframework.boot.amqp.autoconfigure.RabbitAutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; @@ -37,7 +37,7 @@ import org.springframework.context.annotation.Bean; * @since 2.0.0 */ @AutoConfiguration(after = RabbitAutoConfiguration.class) -@ConditionalOnClass(RabbitTemplate.class) +@ConditionalOnClass({ RabbitHealthIndicator.class, RabbitTemplate.class }) @ConditionalOnBean(RabbitTemplate.class) @ConditionalOnEnabledHealthIndicator("rabbit") public class RabbitHealthContributorAutoConfiguration diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/amqp/RabbitConnectionFactoryMetricsPostProcessor.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/amqp/RabbitConnectionFactoryMetricsPostProcessor.java index de1835d8ee..2fc6cbae22 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/amqp/RabbitConnectionFactoryMetricsPostProcessor.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/amqp/RabbitConnectionFactoryMetricsPostProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2022 the original author or authors. + * Copyright 2012-2025 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. @@ -23,7 +23,7 @@ import io.micrometer.core.instrument.Tags; import org.springframework.amqp.rabbit.connection.AbstractConnectionFactory; import org.springframework.beans.factory.config.BeanPostProcessor; -import org.springframework.boot.actuate.metrics.amqp.RabbitMetrics; +import org.springframework.boot.amqp.actuate.metrics.RabbitMetrics; import org.springframework.context.ApplicationContext; import org.springframework.core.Ordered; import org.springframework.util.StringUtils; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/amqp/RabbitMetricsAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/amqp/RabbitMetricsAutoConfiguration.java index 270cbd4e16..7a8b027165 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/amqp/RabbitMetricsAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/amqp/RabbitMetricsAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2022 the original author or authors. + * Copyright 2012-2025 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. @@ -22,7 +22,7 @@ import io.micrometer.core.instrument.MeterRegistry; import org.springframework.amqp.rabbit.connection.AbstractConnectionFactory; import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration; import org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration; -import org.springframework.boot.amqp.autoconfigure.RabbitAutoConfiguration; +import org.springframework.boot.amqp.actuate.metrics.RabbitMetrics; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; @@ -37,9 +37,9 @@ import org.springframework.context.annotation.Bean; * @author Stephane Nicoll * @since 2.0.0 */ -@AutoConfiguration(after = { MetricsAutoConfiguration.class, RabbitAutoConfiguration.class, - SimpleMetricsExportAutoConfiguration.class }) -@ConditionalOnClass({ ConnectionFactory.class, AbstractConnectionFactory.class }) +@AutoConfiguration(after = { MetricsAutoConfiguration.class, SimpleMetricsExportAutoConfiguration.class }, + afterName = "org.springframework.boot.amqp.autoconfigure.RabbitAutoConfiguration") +@ConditionalOnClass({ ConnectionFactory.class, AbstractConnectionFactory.class, RabbitMetrics.class }) @ConditionalOnBean({ org.springframework.amqp.rabbit.connection.ConnectionFactory.class, MeterRegistry.class }) public class RabbitMetricsAutoConfiguration { diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/amqp/RabbitHealthContributorAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/amqp/RabbitHealthContributorAutoConfigurationTests.java index 681a9d66de..b443e7052a 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/amqp/RabbitHealthContributorAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/amqp/RabbitHealthContributorAutoConfigurationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 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. @@ -18,8 +18,8 @@ package org.springframework.boot.actuate.autoconfigure.amqp; import org.junit.jupiter.api.Test; -import org.springframework.boot.actuate.amqp.RabbitHealthIndicator; import org.springframework.boot.actuate.autoconfigure.health.HealthContributorAutoConfiguration; +import org.springframework.boot.amqp.actuate.health.RabbitHealthIndicator; import org.springframework.boot.amqp.autoconfigure.RabbitAutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; diff --git a/spring-boot-project/spring-boot-actuator/build.gradle b/spring-boot-project/spring-boot-actuator/build.gradle index 4296796e17..4ef10e6912 100644 --- a/spring-boot-project/spring-boot-actuator/build.gradle +++ b/spring-boot-project/spring-boot-actuator/build.gradle @@ -84,7 +84,6 @@ dependencies { optional("org.springframework:spring-web") optional("org.springframework:spring-webmvc") optional("org.springframework.graphql:spring-graphql") - optional("org.springframework.amqp:spring-rabbit") optional("org.springframework.data:spring-data-couchbase") optional("org.springframework.data:spring-data-elasticsearch") optional("org.springframework.data:spring-data-ldap") diff --git a/spring-boot-project/spring-boot-amqp/build.gradle b/spring-boot-project/spring-boot-amqp/build.gradle index af1bc9ce0f..3642f8b7c5 100644 --- a/spring-boot-project/spring-boot-amqp/build.gradle +++ b/spring-boot-project/spring-boot-amqp/build.gradle @@ -13,11 +13,16 @@ dependencies { api("org.springframework:spring-messaging") api("org.springframework.amqp:spring-rabbit") + compileOnly("com.fasterxml.jackson.core:jackson-annotations") + implementation(project(":spring-boot-project:spring-boot-tx")) + optional(project(":spring-boot-project:spring-boot-actuator")) optional(project(":spring-boot-project:spring-boot-autoconfigure")) + optional("io.micrometer:micrometer-core") optional("org.springframework.amqp:spring-rabbit-stream") + testCompileOnly("com.fasterxml.jackson.core:jackson-annotations") testImplementation(project(":spring-boot-project:spring-boot-test")) testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/amqp/RabbitHealthIndicator.java b/spring-boot-project/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/actuate/health/RabbitHealthIndicator.java similarity index 96% rename from spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/amqp/RabbitHealthIndicator.java rename to spring-boot-project/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/actuate/health/RabbitHealthIndicator.java index e4861b0bcc..5db00a6705 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/amqp/RabbitHealthIndicator.java +++ b/spring-boot-project/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/actuate/health/RabbitHealthIndicator.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.actuate.amqp; +package org.springframework.boot.amqp.actuate.health; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.boot.actuate.health.AbstractHealthIndicator; @@ -27,7 +27,7 @@ import org.springframework.util.Assert; * RabbitMQ messaging system. * * @author Christian Dupuis - * @since 1.1.0 + * @since 4.0.0 */ public class RabbitHealthIndicator extends AbstractHealthIndicator { diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/amqp/package-info.java b/spring-boot-project/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/actuate/health/package-info.java similarity index 77% rename from spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/amqp/package-info.java rename to spring-boot-project/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/actuate/health/package-info.java index ef5e753d73..acae805313 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/amqp/package-info.java +++ b/spring-boot-project/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/actuate/health/package-info.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2025 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. @@ -15,6 +15,6 @@ */ /** - * Actuator support for RabbitMQ Java Client metrics. + * Health integration for AMQP and RabbitMQ. */ -package org.springframework.boot.actuate.metrics.amqp; +package org.springframework.boot.amqp.actuate.health; diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/amqp/RabbitMetrics.java b/spring-boot-project/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/actuate/metrics/RabbitMetrics.java similarity index 96% rename from spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/amqp/RabbitMetrics.java rename to spring-boot-project/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/actuate/metrics/RabbitMetrics.java index 6054386f18..cff010fbec 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/amqp/RabbitMetrics.java +++ b/spring-boot-project/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/actuate/metrics/RabbitMetrics.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.actuate.metrics.amqp; +package org.springframework.boot.amqp.actuate.metrics; import java.util.Collections; @@ -31,7 +31,7 @@ import org.springframework.util.Assert; * * @author Arnaud Cogoluègnes * @author Stephane Nicoll - * @since 2.0.0 + * @since 4.0.0 */ public class RabbitMetrics implements MeterBinder { diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/amqp/package-info.java b/spring-boot-project/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/actuate/metrics/package-info.java similarity index 79% rename from spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/amqp/package-info.java rename to spring-boot-project/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/actuate/metrics/package-info.java index fda433473c..e0664883af 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/amqp/package-info.java +++ b/spring-boot-project/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/actuate/metrics/package-info.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2025 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. @@ -15,6 +15,6 @@ */ /** - * Actuator support for AMQP and RabbitMQ. + * Metrics for AMQP and RabbitMQ. */ -package org.springframework.boot.actuate.amqp; +package org.springframework.boot.amqp.actuate.metrics; diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/amqp/RabbitHealthIndicatorTests.java b/spring-boot-project/spring-boot-amqp/src/test/java/org/springframework/boot/amqp/actuate/health/RabbitHealthIndicatorTests.java similarity index 98% rename from spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/amqp/RabbitHealthIndicatorTests.java rename to spring-boot-project/spring-boot-amqp/src/test/java/org/springframework/boot/amqp/actuate/health/RabbitHealthIndicatorTests.java index 4a10bee815..39fb2bac49 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/amqp/RabbitHealthIndicatorTests.java +++ b/spring-boot-project/spring-boot-amqp/src/test/java/org/springframework/boot/amqp/actuate/health/RabbitHealthIndicatorTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.actuate.amqp; +package org.springframework.boot.amqp.actuate.health; import java.util.Collections; diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/amqp/RabbitMetricsTests.java b/spring-boot-project/spring-boot-amqp/src/test/java/org/springframework/boot/amqp/actuate/metrics/RabbitMetricsTests.java similarity index 93% rename from spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/amqp/RabbitMetricsTests.java rename to spring-boot-project/spring-boot-amqp/src/test/java/org/springframework/boot/amqp/actuate/metrics/RabbitMetricsTests.java index a186e6f231..994abc7c89 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/amqp/RabbitMetricsTests.java +++ b/spring-boot-project/spring-boot-amqp/src/test/java/org/springframework/boot/amqp/actuate/metrics/RabbitMetricsTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2025 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.actuate.metrics.amqp; +package org.springframework.boot.amqp.actuate.metrics; import com.rabbitmq.client.ConnectionFactory; import io.micrometer.core.instrument.Tags; diff --git a/src/checkstyle/import-control.xml b/src/checkstyle/import-control.xml index 2ff31bf9c9..788dd244e3 100644 --- a/src/checkstyle/import-control.xml +++ b/src/checkstyle/import-control.xml @@ -5,6 +5,7 @@ + @@ -48,6 +49,17 @@ + + + + + + + + + + + @@ -189,4 +201,5 @@ +