Skip to content

Commit f13eae3

Browse files
committed
Move AMQP/Rabbit metrics auto-configuration into spring-boot-amqp
1 parent 81fa665 commit f13eae3

File tree

10 files changed

+42
-30
lines changed

10 files changed

+42
-30
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure-all/build.gradle

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ dependencies {
2828
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
2929

3030
optional(project(":spring-boot-project:spring-boot-activemq"))
31-
optional(project(":spring-boot-project:spring-boot-amqp"))
3231
optional(project(":spring-boot-project:spring-boot-artemis"))
3332
optional(project(":spring-boot-project:spring-boot-cache"))
3433
optional(project(":spring-boot-project:spring-boot-couchbase"))
@@ -135,7 +134,6 @@ dependencies {
135134
optional("org.springframework:spring-messaging")
136135
optional("org.springframework:spring-webflux")
137136
optional("org.springframework:spring-webmvc")
138-
optional("org.springframework.amqp:spring-rabbit")
139137
optional("org.springframework.batch:spring-batch-core")
140138
optional("org.springframework.data:spring-data-couchbase")
141139
optional("org.springframework.data:spring-data-jpa")

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ org.springframework.boot.actuate.autoconfigure.logging.OpenTelemetryLoggingAutoC
2222
org.springframework.boot.actuate.autoconfigure.logging.otlp.OtlpLoggingAutoConfiguration
2323
org.springframework.boot.actuate.autoconfigure.management.HeapDumpWebEndpointAutoConfiguration
2424
org.springframework.boot.actuate.autoconfigure.management.ThreadDumpEndpointAutoConfiguration
25-
org.springframework.boot.actuate.autoconfigure.metrics.amqp.RabbitMetricsAutoConfiguration
2625
org.springframework.boot.actuate.autoconfigure.metrics.cache.CacheMetricsAutoConfiguration
2726
org.springframework.boot.actuate.autoconfigure.metrics.data.RepositoryMetricsAutoConfiguration
2827
org.springframework.boot.actuate.autoconfigure.metrics.export.appoptics.AppOpticsMetricsExportAutoConfiguration

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/test/MetricsIntegrationTests.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,14 @@
3434
import org.junit.jupiter.api.Test;
3535

3636
import org.springframework.beans.factory.annotation.Autowired;
37-
import org.springframework.boot.actuate.autoconfigure.metrics.amqp.RabbitMetricsAutoConfiguration;
38-
import org.springframework.boot.actuate.autoconfigure.metrics.cache.CacheMetricsAutoConfiguration;
3937
import org.springframework.boot.actuate.autoconfigure.metrics.jdbc.DataSourcePoolMetricsAutoConfiguration;
4038
import org.springframework.boot.actuate.autoconfigure.metrics.orm.jpa.HibernateMetricsAutoConfiguration;
4139
import org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration;
4240
import org.springframework.boot.actuate.autoconfigure.observation.web.client.HttpClientObservationsAutoConfiguration;
4341
import org.springframework.boot.actuate.autoconfigure.observation.web.reactive.WebFluxObservationAutoConfiguration;
4442
import org.springframework.boot.actuate.autoconfigure.observation.web.servlet.WebMvcObservationAutoConfiguration;
4543
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
44+
import org.springframework.boot.cache.actuate.metrics.autoconfigure.CacheMetricsAutoConfiguration;
4645
import org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration;
4746
import org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration;
4847
import org.springframework.boot.metrics.autoconfigure.MetricsAutoConfiguration;
@@ -146,14 +145,13 @@ void metricsFilterRegisteredForAsyncDispatches() {
146145
@Configuration(proxyBeanMethods = false)
147146
@ImportAutoConfiguration({ MetricsAutoConfiguration.class, ObservationAutoConfiguration.class,
148147
JvmMetricsAutoConfiguration.class, LogbackMetricsAutoConfiguration.class,
149-
SystemMetricsAutoConfiguration.class, RabbitMetricsAutoConfiguration.class,
150-
CacheMetricsAutoConfiguration.class, DataSourcePoolMetricsAutoConfiguration.class,
151-
HibernateMetricsAutoConfiguration.class, HttpClientObservationsAutoConfiguration.class,
152-
WebFluxObservationAutoConfiguration.class, WebMvcObservationAutoConfiguration.class,
153-
JacksonAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class,
154-
RestTemplateAutoConfiguration.class, WebMvcAutoConfiguration.class,
155-
DispatcherServletAutoConfiguration.class, TomcatServletWebServerAutoConfiguration.class,
156-
TomcatServletWebServerAutoConfiguration.class })
148+
SystemMetricsAutoConfiguration.class, CacheMetricsAutoConfiguration.class,
149+
DataSourcePoolMetricsAutoConfiguration.class, HibernateMetricsAutoConfiguration.class,
150+
HttpClientObservationsAutoConfiguration.class, WebFluxObservationAutoConfiguration.class,
151+
WebMvcObservationAutoConfiguration.class, JacksonAutoConfiguration.class,
152+
HttpMessageConvertersAutoConfiguration.class, RestTemplateAutoConfiguration.class,
153+
WebMvcAutoConfiguration.class, DispatcherServletAutoConfiguration.class,
154+
TomcatServletWebServerAutoConfiguration.class, TomcatServletWebServerAutoConfiguration.class })
157155
@Import(PersonController.class)
158156
static class MetricsApp {
159157

spring-boot-project/spring-boot-amqp/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ dependencies {
1818
optional(project(":spring-boot-project:spring-boot-actuator-autoconfigure"))
1919
optional(project(":spring-boot-project:spring-boot-autoconfigure"))
2020
optional(project(":spring-boot-project:spring-boot-docker-compose"))
21+
optional(project(":spring-boot-project:spring-boot-metrics"))
2122
optional(project(":spring-boot-project:spring-boot-testcontainers"))
2223
optional("io.micrometer:micrometer-core")
2324
optional("org.springframework.amqp:spring-rabbit-stream")
2425
optional("org.testcontainers:rabbitmq")
2526
}
2627

27-
2828
dependencies {
2929
dockerTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support-docker"))
3030
dockerTestImplementation(testFixtures(project(":spring-boot-project:spring-boot-docker-compose")))

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/amqp/RabbitConnectionFactoryMetricsPostProcessor.java renamed to spring-boot-project/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/actuate/metrics/autoconfigure/RabbitConnectionFactoryMetricsPostProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.boot.actuate.autoconfigure.metrics.amqp;
17+
package org.springframework.boot.amqp.actuate.metrics.autoconfigure;
1818

1919
import com.rabbitmq.client.ConnectionFactory;
2020
import com.rabbitmq.client.MetricsCollector;

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/amqp/RabbitMetricsAutoConfiguration.java renamed to spring-boot-project/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/actuate/metrics/autoconfigure/RabbitMetricsAutoConfiguration.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,17 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.boot.actuate.autoconfigure.metrics.amqp;
17+
package org.springframework.boot.amqp.actuate.metrics.autoconfigure;
1818

1919
import com.rabbitmq.client.ConnectionFactory;
2020
import io.micrometer.core.instrument.MeterRegistry;
2121

2222
import org.springframework.amqp.rabbit.connection.AbstractConnectionFactory;
23-
import org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration;
24-
import org.springframework.boot.amqp.actuate.metrics.RabbitMetrics;
23+
import org.springframework.boot.amqp.autoconfigure.RabbitAutoConfiguration;
2524
import org.springframework.boot.autoconfigure.AutoConfiguration;
2625
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
2726
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
2827
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
29-
import org.springframework.boot.metrics.autoconfigure.MetricsAutoConfiguration;
3028
import org.springframework.context.ApplicationContext;
3129
import org.springframework.context.annotation.Bean;
3230

@@ -37,9 +35,9 @@
3735
* @author Stephane Nicoll
3836
* @since 2.0.0
3937
*/
40-
@AutoConfiguration(after = { MetricsAutoConfiguration.class, SimpleMetricsExportAutoConfiguration.class },
41-
afterName = "org.springframework.boot.amqp.autoconfigure.RabbitAutoConfiguration")
42-
@ConditionalOnClass({ ConnectionFactory.class, AbstractConnectionFactory.class, RabbitMetrics.class })
38+
@AutoConfiguration(afterName = "org.springframework.boot.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration",
39+
after = RabbitAutoConfiguration.class)
40+
@ConditionalOnClass({ ConnectionFactory.class, AbstractConnectionFactory.class, MeterRegistry.class })
4341
@ConditionalOnBean({ org.springframework.amqp.rabbit.connection.ConnectionFactory.class, MeterRegistry.class })
4442
public class RabbitMetricsAutoConfiguration {
4543

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/amqp/package-info.java renamed to spring-boot-project/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/actuate/metrics/autoconfigure/package-info.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@
1717
/**
1818
* Auto-configuration for RabbitMQ metrics.
1919
*/
20-
package org.springframework.boot.actuate.autoconfigure.metrics.amqp;
20+
package org.springframework.boot.amqp.actuate.metrics.autoconfigure;
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
org.springframework.boot.amqp.actuate.health.autoconfigure.RabbitHealthContributorAutoConfiguration
2-
org.springframework.boot.amqp.autoconfigure.RabbitAutoConfiguration
2+
org.springframework.boot.amqp.actuate.metrics.autoconfigure.RabbitMetricsAutoConfiguration
3+
org.springframework.boot.amqp.autoconfigure.RabbitAutoConfiguration

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/amqp/RabbitMetricsAutoConfigurationMeterBinderCycleIntegrationTests.java renamed to spring-boot-project/spring-boot-amqp/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/amqp/RabbitMetricsAutoConfigurationMeterBinderCycleIntegrationTests.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,20 @@
1818

1919
import io.micrometer.core.instrument.MeterRegistry;
2020
import io.micrometer.core.instrument.binder.MeterBinder;
21+
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
2122
import org.junit.jupiter.api.Test;
2223

2324
import org.springframework.amqp.rabbit.core.RabbitTemplate;
24-
import org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration;
25+
import org.springframework.boot.amqp.actuate.metrics.autoconfigure.RabbitMetricsAutoConfiguration;
2526
import org.springframework.boot.amqp.autoconfigure.RabbitAutoConfiguration;
2627
import org.springframework.boot.metrics.autoconfigure.MetricsAutoConfiguration;
2728
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
29+
import org.springframework.context.annotation.Bean;
2830
import org.springframework.context.annotation.Configuration;
2931
import org.springframework.context.annotation.Import;
3032

33+
import static org.assertj.core.api.Assertions.assertThat;
34+
3135
/**
3236
* Integration test to check that {@link RabbitMetricsAutoConfiguration} does not cause a
3337
* dependency cycle when used with {@link MeterBinder}.
@@ -40,24 +44,33 @@ class RabbitMetricsAutoConfigurationMeterBinderCycleIntegrationTests {
4044
@Test
4145
void doesNotFormCycle() {
4246
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(TestConfig.class);
43-
context.getBean(TestService.class);
47+
TestService testService = context.getBean(TestService.class);
4448
context.close();
49+
assertThat(testService.bound).isTrue();
4550
}
4651

4752
@Configuration
4853
@Import({ TestService.class, RabbitAutoConfiguration.class, MetricsAutoConfiguration.class,
49-
SimpleMetricsExportAutoConfiguration.class, RabbitMetricsAutoConfiguration.class })
54+
RabbitMetricsAutoConfiguration.class })
5055
static class TestConfig {
5156

57+
@Bean
58+
SimpleMeterRegistry meterRegistry() {
59+
return new SimpleMeterRegistry();
60+
}
61+
5262
}
5363

5464
static class TestService implements MeterBinder {
5565

66+
private boolean bound;
67+
5668
TestService(RabbitTemplate rabbitTemplate) {
5769
}
5870

5971
@Override
6072
public void bindTo(MeterRegistry registry) {
73+
this.bound = true;
6174
}
6275

6376
}

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/amqp/RabbitMetricsAutoConfigurationTests.java renamed to spring-boot-project/spring-boot-amqp/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/amqp/RabbitMetricsAutoConfigurationTests.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@
1717
package org.springframework.boot.actuate.autoconfigure.metrics.amqp;
1818

1919
import io.micrometer.core.instrument.MeterRegistry;
20+
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
2021
import org.junit.jupiter.api.Test;
2122

2223
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
2324
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
24-
import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun;
25+
import org.springframework.boot.amqp.actuate.metrics.autoconfigure.RabbitMetricsAutoConfiguration;
2526
import org.springframework.boot.amqp.autoconfigure.RabbitAutoConfiguration;
2627
import org.springframework.boot.autoconfigure.AutoConfigurations;
28+
import org.springframework.boot.metrics.autoconfigure.MetricsAutoConfiguration;
2729
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
2830
import org.springframework.context.annotation.Bean;
2931
import org.springframework.context.annotation.Configuration;
@@ -37,8 +39,11 @@
3739
*/
3840
class RabbitMetricsAutoConfigurationTests {
3941

40-
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner().with(MetricsRun.simple())
41-
.withConfiguration(AutoConfigurations.of(RabbitAutoConfiguration.class, RabbitMetricsAutoConfiguration.class));
42+
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
43+
.withBean(SimpleMeterRegistry.class)
44+
.withConfiguration(AutoConfigurations.of(RabbitAutoConfiguration.class, RabbitMetricsAutoConfiguration.class,
45+
MetricsAutoConfiguration.class))
46+
.withPropertyValues("management.metrics.use-global-registry=false");
4247

4348
@Test
4449
void autoConfiguredConnectionFactoryIsInstrumented() {

0 commit comments

Comments
 (0)