Move AMQP/Rabbit metrics auto-configuration into spring-boot-amqp
This commit is contained in:
committed by
Phillip Webb
parent
2b8dfc0ca8
commit
ff0876c001
@@ -28,7 +28,6 @@ dependencies {
|
||||
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
|
||||
|
||||
optional(project(":spring-boot-project:spring-boot-activemq"))
|
||||
optional(project(":spring-boot-project:spring-boot-amqp"))
|
||||
optional(project(":spring-boot-project:spring-boot-artemis"))
|
||||
optional(project(":spring-boot-project:spring-boot-cache"))
|
||||
optional(project(":spring-boot-project:spring-boot-couchbase"))
|
||||
@@ -133,7 +132,6 @@ dependencies {
|
||||
optional("org.springframework:spring-messaging")
|
||||
optional("org.springframework:spring-webflux")
|
||||
optional("org.springframework:spring-webmvc")
|
||||
optional("org.springframework.amqp:spring-rabbit")
|
||||
optional("org.springframework.batch:spring-batch-core")
|
||||
optional("org.springframework.data:spring-data-couchbase")
|
||||
optional("org.springframework.data:spring-data-jpa")
|
||||
|
||||
@@ -22,7 +22,6 @@ org.springframework.boot.actuate.autoconfigure.logging.OpenTelemetryLoggingAutoC
|
||||
org.springframework.boot.actuate.autoconfigure.logging.otlp.OtlpLoggingAutoConfiguration
|
||||
org.springframework.boot.actuate.autoconfigure.management.HeapDumpWebEndpointAutoConfiguration
|
||||
org.springframework.boot.actuate.autoconfigure.management.ThreadDumpEndpointAutoConfiguration
|
||||
org.springframework.boot.actuate.autoconfigure.metrics.amqp.RabbitMetricsAutoConfiguration
|
||||
org.springframework.boot.actuate.autoconfigure.metrics.cache.CacheMetricsAutoConfiguration
|
||||
org.springframework.boot.actuate.autoconfigure.metrics.data.RepositoryMetricsAutoConfiguration
|
||||
org.springframework.boot.actuate.autoconfigure.metrics.export.appoptics.AppOpticsMetricsExportAutoConfiguration
|
||||
|
||||
@@ -34,7 +34,6 @@ import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.actuate.autoconfigure.metrics.amqp.RabbitMetricsAutoConfiguration;
|
||||
import org.springframework.boot.actuate.autoconfigure.metrics.cache.CacheMetricsAutoConfiguration;
|
||||
import org.springframework.boot.actuate.autoconfigure.metrics.jdbc.DataSourcePoolMetricsAutoConfiguration;
|
||||
import org.springframework.boot.actuate.autoconfigure.metrics.orm.jpa.HibernateMetricsAutoConfiguration;
|
||||
@@ -146,14 +145,13 @@ class MetricsIntegrationTests {
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@ImportAutoConfiguration({ MetricsAutoConfiguration.class, ObservationAutoConfiguration.class,
|
||||
JvmMetricsAutoConfiguration.class, LogbackMetricsAutoConfiguration.class,
|
||||
SystemMetricsAutoConfiguration.class, RabbitMetricsAutoConfiguration.class,
|
||||
CacheMetricsAutoConfiguration.class, DataSourcePoolMetricsAutoConfiguration.class,
|
||||
HibernateMetricsAutoConfiguration.class, HttpClientObservationsAutoConfiguration.class,
|
||||
WebFluxObservationAutoConfiguration.class, WebMvcObservationAutoConfiguration.class,
|
||||
JacksonAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class,
|
||||
RestTemplateAutoConfiguration.class, WebMvcAutoConfiguration.class,
|
||||
DispatcherServletAutoConfiguration.class, TomcatServletWebServerAutoConfiguration.class,
|
||||
TomcatServletWebServerAutoConfiguration.class })
|
||||
SystemMetricsAutoConfiguration.class, CacheMetricsAutoConfiguration.class,
|
||||
DataSourcePoolMetricsAutoConfiguration.class, HibernateMetricsAutoConfiguration.class,
|
||||
HttpClientObservationsAutoConfiguration.class, WebFluxObservationAutoConfiguration.class,
|
||||
WebMvcObservationAutoConfiguration.class, JacksonAutoConfiguration.class,
|
||||
HttpMessageConvertersAutoConfiguration.class, RestTemplateAutoConfiguration.class,
|
||||
WebMvcAutoConfiguration.class, DispatcherServletAutoConfiguration.class,
|
||||
TomcatServletWebServerAutoConfiguration.class, TomcatServletWebServerAutoConfiguration.class })
|
||||
@Import(PersonController.class)
|
||||
static class MetricsApp {
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ dependencies {
|
||||
optional(project(":spring-boot-project:spring-boot-actuator-autoconfigure"))
|
||||
optional(project(":spring-boot-project:spring-boot-autoconfigure"))
|
||||
optional(project(":spring-boot-project:spring-boot-docker-compose"))
|
||||
optional(project(":spring-boot-project:spring-boot-metrics"))
|
||||
optional(project(":spring-boot-project:spring-boot-testcontainers"))
|
||||
optional("io.micrometer:micrometer-core")
|
||||
optional("org.springframework.amqp:spring-rabbit-stream")
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.actuate.autoconfigure.metrics.amqp;
|
||||
package org.springframework.boot.amqp.actuate.metrics.autoconfigure;
|
||||
|
||||
import com.rabbitmq.client.ConnectionFactory;
|
||||
import com.rabbitmq.client.MetricsCollector;
|
||||
@@ -14,19 +14,17 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.actuate.autoconfigure.metrics.amqp;
|
||||
package org.springframework.boot.amqp.actuate.metrics.autoconfigure;
|
||||
|
||||
import com.rabbitmq.client.ConnectionFactory;
|
||||
import io.micrometer.core.instrument.MeterRegistry;
|
||||
|
||||
import org.springframework.amqp.rabbit.connection.AbstractConnectionFactory;
|
||||
import org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration;
|
||||
import org.springframework.boot.amqp.actuate.metrics.RabbitMetrics;
|
||||
import org.springframework.boot.amqp.autoconfigure.RabbitAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.metrics.autoconfigure.MetricsAutoConfiguration;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
|
||||
@@ -37,9 +35,9 @@ import org.springframework.context.annotation.Bean;
|
||||
* @author Stephane Nicoll
|
||||
* @since 2.0.0
|
||||
*/
|
||||
@AutoConfiguration(after = { MetricsAutoConfiguration.class, SimpleMetricsExportAutoConfiguration.class },
|
||||
afterName = "org.springframework.boot.amqp.autoconfigure.RabbitAutoConfiguration")
|
||||
@ConditionalOnClass({ ConnectionFactory.class, AbstractConnectionFactory.class, RabbitMetrics.class })
|
||||
@AutoConfiguration(afterName = "org.springframework.boot.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration",
|
||||
after = RabbitAutoConfiguration.class)
|
||||
@ConditionalOnClass({ ConnectionFactory.class, AbstractConnectionFactory.class, MeterRegistry.class })
|
||||
@ConditionalOnBean({ org.springframework.amqp.rabbit.connection.ConnectionFactory.class, MeterRegistry.class })
|
||||
public class RabbitMetricsAutoConfiguration {
|
||||
|
||||
@@ -17,4 +17,4 @@
|
||||
/**
|
||||
* Auto-configuration for RabbitMQ metrics.
|
||||
*/
|
||||
package org.springframework.boot.actuate.autoconfigure.metrics.amqp;
|
||||
package org.springframework.boot.amqp.actuate.metrics.autoconfigure;
|
||||
@@ -1,2 +1,3 @@
|
||||
org.springframework.boot.amqp.actuate.health.autoconfigure.RabbitHealthContributorAutoConfiguration
|
||||
org.springframework.boot.amqp.autoconfigure.RabbitAutoConfiguration
|
||||
org.springframework.boot.amqp.actuate.metrics.autoconfigure.RabbitMetricsAutoConfiguration
|
||||
org.springframework.boot.amqp.autoconfigure.RabbitAutoConfiguration
|
||||
|
||||
@@ -18,16 +18,20 @@ package org.springframework.boot.actuate.autoconfigure.metrics.amqp;
|
||||
|
||||
import io.micrometer.core.instrument.MeterRegistry;
|
||||
import io.micrometer.core.instrument.binder.MeterBinder;
|
||||
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration;
|
||||
import org.springframework.boot.amqp.actuate.metrics.autoconfigure.RabbitMetricsAutoConfiguration;
|
||||
import org.springframework.boot.amqp.autoconfigure.RabbitAutoConfiguration;
|
||||
import org.springframework.boot.metrics.autoconfigure.MetricsAutoConfiguration;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Import;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Integration test to check that {@link RabbitMetricsAutoConfiguration} does not cause a
|
||||
* dependency cycle when used with {@link MeterBinder}.
|
||||
@@ -40,24 +44,33 @@ class RabbitMetricsAutoConfigurationMeterBinderCycleIntegrationTests {
|
||||
@Test
|
||||
void doesNotFormCycle() {
|
||||
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(TestConfig.class);
|
||||
context.getBean(TestService.class);
|
||||
TestService testService = context.getBean(TestService.class);
|
||||
context.close();
|
||||
assertThat(testService.bound).isTrue();
|
||||
}
|
||||
|
||||
@Configuration
|
||||
@Import({ TestService.class, RabbitAutoConfiguration.class, MetricsAutoConfiguration.class,
|
||||
SimpleMetricsExportAutoConfiguration.class, RabbitMetricsAutoConfiguration.class })
|
||||
RabbitMetricsAutoConfiguration.class })
|
||||
static class TestConfig {
|
||||
|
||||
@Bean
|
||||
SimpleMeterRegistry meterRegistry() {
|
||||
return new SimpleMeterRegistry();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static class TestService implements MeterBinder {
|
||||
|
||||
private boolean bound;
|
||||
|
||||
TestService(RabbitTemplate rabbitTemplate) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void bindTo(MeterRegistry registry) {
|
||||
this.bound = true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -17,13 +17,15 @@
|
||||
package org.springframework.boot.actuate.autoconfigure.metrics.amqp;
|
||||
|
||||
import io.micrometer.core.instrument.MeterRegistry;
|
||||
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
|
||||
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
|
||||
import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun;
|
||||
import org.springframework.boot.amqp.actuate.metrics.autoconfigure.RabbitMetricsAutoConfiguration;
|
||||
import org.springframework.boot.amqp.autoconfigure.RabbitAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.metrics.autoconfigure.MetricsAutoConfiguration;
|
||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
@@ -37,8 +39,11 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
*/
|
||||
class RabbitMetricsAutoConfigurationTests {
|
||||
|
||||
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner().with(MetricsRun.simple())
|
||||
.withConfiguration(AutoConfigurations.of(RabbitAutoConfiguration.class, RabbitMetricsAutoConfiguration.class));
|
||||
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
|
||||
.withBean(SimpleMeterRegistry.class)
|
||||
.withConfiguration(AutoConfigurations.of(RabbitAutoConfiguration.class, RabbitMetricsAutoConfiguration.class,
|
||||
MetricsAutoConfiguration.class))
|
||||
.withPropertyValues("management.metrics.use-global-registry=false");
|
||||
|
||||
@Test
|
||||
void autoConfiguredConnectionFactoryIsInstrumented() {
|
||||
Reference in New Issue
Block a user