diff --git a/spring-integration-core/src/main/java/org/springframework/integration/channel/AbstractMessageChannel.java b/spring-integration-core/src/main/java/org/springframework/integration/channel/AbstractMessageChannel.java index 5ff934bf75..52352f1399 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/channel/AbstractMessageChannel.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/channel/AbstractMessageChannel.java @@ -36,12 +36,12 @@ import org.springframework.integration.support.management.ConfigurableMetricsAwa import org.springframework.integration.support.management.DefaultMessageChannelMetrics; import org.springframework.integration.support.management.IntegrationManagedResource; import org.springframework.integration.support.management.MessageChannelMetrics; -import org.springframework.integration.support.management.MetricsCaptor; import org.springframework.integration.support.management.MetricsContext; -import org.springframework.integration.support.management.SampleFacade; import org.springframework.integration.support.management.Statistics; -import org.springframework.integration.support.management.TimerFacade; import org.springframework.integration.support.management.TrackableComponent; +import org.springframework.integration.support.management.metrics.MetricsCaptor; +import org.springframework.integration.support.management.metrics.SampleFacade; +import org.springframework.integration.support.management.metrics.TimerFacade; import org.springframework.integration.support.utils.IntegrationUtils; import org.springframework.messaging.Message; import org.springframework.messaging.MessageChannel; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/channel/AbstractPollableChannel.java b/spring-integration-core/src/main/java/org/springframework/integration/channel/AbstractPollableChannel.java index 6ffaab08e2..62593899d4 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/channel/AbstractPollableChannel.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/channel/AbstractPollableChannel.java @@ -20,8 +20,8 @@ import java.util.ArrayDeque; import java.util.Deque; import java.util.List; -import org.springframework.integration.support.management.CounterFacade; import org.springframework.integration.support.management.PollableChannelManagement; +import org.springframework.integration.support.management.metrics.CounterFacade; import org.springframework.messaging.Message; import org.springframework.messaging.PollableChannel; import org.springframework.messaging.support.ChannelInterceptor; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/channel/NullChannel.java b/spring-integration-core/src/main/java/org/springframework/integration/channel/NullChannel.java index 2a2911ccf0..416d1a985b 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/channel/NullChannel.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/channel/NullChannel.java @@ -28,9 +28,9 @@ import org.springframework.integration.support.management.ConfigurableMetricsAwa import org.springframework.integration.support.management.DefaultMessageChannelMetrics; import org.springframework.integration.support.management.IntegrationManagedResource; import org.springframework.integration.support.management.MessageChannelMetrics; -import org.springframework.integration.support.management.MetricsCaptor; import org.springframework.integration.support.management.Statistics; -import org.springframework.integration.support.management.TimerFacade; +import org.springframework.integration.support.management.metrics.MetricsCaptor; +import org.springframework.integration.support.management.metrics.TimerFacade; import org.springframework.messaging.Message; import org.springframework.messaging.PollableChannel; import org.springframework.util.Assert; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/endpoint/AbstractMessageSource.java b/spring-integration-core/src/main/java/org/springframework/integration/endpoint/AbstractMessageSource.java index 7ca648f1dc..20e57a72a7 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/endpoint/AbstractMessageSource.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/endpoint/AbstractMessageSource.java @@ -26,10 +26,10 @@ import org.springframework.expression.Expression; import org.springframework.integration.core.MessageSource; import org.springframework.integration.support.AbstractIntegrationMessageBuilder; import org.springframework.integration.support.context.NamedComponent; -import org.springframework.integration.support.management.CounterFacade; import org.springframework.integration.support.management.IntegrationManagedResource; import org.springframework.integration.support.management.MessageSourceMetrics; -import org.springframework.integration.support.management.MetricsCaptor; +import org.springframework.integration.support.management.metrics.CounterFacade; +import org.springframework.integration.support.management.metrics.MetricsCaptor; import org.springframework.integration.util.AbstractExpressionEvaluator; import org.springframework.messaging.Message; import org.springframework.messaging.MessagingException; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/handler/AbstractMessageHandler.java b/spring-integration-core/src/main/java/org/springframework/integration/handler/AbstractMessageHandler.java index ee7bcfc0d4..f6c068996a 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/handler/AbstractMessageHandler.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/handler/AbstractMessageHandler.java @@ -27,12 +27,12 @@ import org.springframework.integration.support.management.ConfigurableMetricsAwa import org.springframework.integration.support.management.DefaultMessageHandlerMetrics; import org.springframework.integration.support.management.IntegrationManagedResource; import org.springframework.integration.support.management.MessageHandlerMetrics; -import org.springframework.integration.support.management.MetricsCaptor; import org.springframework.integration.support.management.MetricsContext; -import org.springframework.integration.support.management.SampleFacade; import org.springframework.integration.support.management.Statistics; -import org.springframework.integration.support.management.TimerFacade; import org.springframework.integration.support.management.TrackableComponent; +import org.springframework.integration.support.management.metrics.MetricsCaptor; +import org.springframework.integration.support.management.metrics.SampleFacade; +import org.springframework.integration.support.management.metrics.TimerFacade; import org.springframework.integration.support.utils.IntegrationUtils; import org.springframework.messaging.Message; import org.springframework.messaging.MessageHandler; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/support/management/IntegrationManagement.java b/spring-integration-core/src/main/java/org/springframework/integration/support/management/IntegrationManagement.java index 22810fe5ce..bb1ade6d58 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/support/management/IntegrationManagement.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/support/management/IntegrationManagement.java @@ -16,6 +16,7 @@ package org.springframework.integration.support.management; +import org.springframework.integration.support.management.metrics.MetricsCaptor; import org.springframework.jmx.export.annotation.ManagedAttribute; import org.springframework.jmx.export.annotation.ManagedOperation; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/support/management/IntegrationManagementConfigurer.java b/spring-integration-core/src/main/java/org/springframework/integration/support/management/IntegrationManagementConfigurer.java index d8bbcee6c0..0ef65d2f9d 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/support/management/IntegrationManagementConfigurer.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/support/management/IntegrationManagementConfigurer.java @@ -16,7 +16,6 @@ package org.springframework.integration.support.management; -import java.lang.reflect.Method; import java.util.Arrays; import java.util.HashMap; import java.util.Map; @@ -33,6 +32,8 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.integration.core.MessageSource; import org.springframework.integration.support.management.IntegrationManagement.ManagementOverrides; +import org.springframework.integration.support.management.metrics.MetricsCaptor; +import org.springframework.integration.support.management.micrometer.MicrometerMetricsCaptor; import org.springframework.integration.support.utils.PatternMatchUtils; import org.springframework.messaging.MessageChannel; import org.springframework.messaging.MessageHandler; @@ -215,17 +216,7 @@ public class IntegrationManagementConfigurer implements SmartInitializingSinglet ClassLoader classLoader = IntegrationManagementConfigurer.class.getClassLoader(); if (ClassUtils.isPresent("io.micrometer.core.instrument.MeterRegistry", classLoader)) { - try { - // Use reflection to avoid a package tangle with ...management.micrometer - Class captor = ClassUtils.forName( - "org.springframework.integration.support.management.micrometer.MicrometerMetricsCaptor", - classLoader); - Method method = captor.getDeclaredMethod("loadCaptor", ApplicationContext.class); - this.metricsCaptor = (MetricsCaptor) method.invoke(null, this.applicationContext); - } - catch (Exception e) { - // no op - } + this.metricsCaptor = MicrometerMetricsCaptor.loadCaptor(this.applicationContext); } if (this.metricsCaptor != null) { injectCaptor(); diff --git a/spring-integration-core/src/main/java/org/springframework/integration/support/management/MessageSourceMetrics.java b/spring-integration-core/src/main/java/org/springframework/integration/support/management/MessageSourceMetrics.java index 17e9fc4a29..bf8ca7fa55 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/support/management/MessageSourceMetrics.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/support/management/MessageSourceMetrics.java @@ -16,6 +16,7 @@ package org.springframework.integration.support.management; +import org.springframework.integration.support.management.metrics.CounterFacade; import org.springframework.jmx.export.annotation.ManagedMetric; import org.springframework.jmx.support.MetricType; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/support/management/CounterFacade.java b/spring-integration-core/src/main/java/org/springframework/integration/support/management/metrics/CounterFacade.java similarity index 91% rename from spring-integration-core/src/main/java/org/springframework/integration/support/management/CounterFacade.java rename to spring-integration-core/src/main/java/org/springframework/integration/support/management/metrics/CounterFacade.java index ddc2325fe0..b8263e2261 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/support/management/CounterFacade.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/support/management/metrics/CounterFacade.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.integration.support.management; +package org.springframework.integration.support.management.metrics; /** * @author Gary Russell diff --git a/spring-integration-core/src/main/java/org/springframework/integration/support/management/GaugeFacade.java b/spring-integration-core/src/main/java/org/springframework/integration/support/management/metrics/GaugeFacade.java similarity index 91% rename from spring-integration-core/src/main/java/org/springframework/integration/support/management/GaugeFacade.java rename to spring-integration-core/src/main/java/org/springframework/integration/support/management/metrics/GaugeFacade.java index 0d491a7720..69dada42e1 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/support/management/GaugeFacade.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/support/management/metrics/GaugeFacade.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.integration.support.management; +package org.springframework.integration.support.management.metrics; /** * @author Gary Russell diff --git a/spring-integration-core/src/main/java/org/springframework/integration/support/management/MetricsCaptor.java b/spring-integration-core/src/main/java/org/springframework/integration/support/management/metrics/MetricsCaptor.java similarity index 97% rename from spring-integration-core/src/main/java/org/springframework/integration/support/management/MetricsCaptor.java rename to spring-integration-core/src/main/java/org/springframework/integration/support/management/metrics/MetricsCaptor.java index f9c41e3360..ae9dde6e1f 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/support/management/MetricsCaptor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/support/management/metrics/MetricsCaptor.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.integration.support.management; +package org.springframework.integration.support.management.metrics; import java.util.function.ToDoubleFunction; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/support/management/SampleFacade.java b/spring-integration-core/src/main/java/org/springframework/integration/support/management/metrics/SampleFacade.java similarity index 91% rename from spring-integration-core/src/main/java/org/springframework/integration/support/management/SampleFacade.java rename to spring-integration-core/src/main/java/org/springframework/integration/support/management/metrics/SampleFacade.java index 1ddca3c2c5..2c5e7edc21 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/support/management/SampleFacade.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/support/management/metrics/SampleFacade.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.integration.support.management; +package org.springframework.integration.support.management.metrics; /** * @author Gary Russell diff --git a/spring-integration-core/src/main/java/org/springframework/integration/support/management/TimerFacade.java b/spring-integration-core/src/main/java/org/springframework/integration/support/management/metrics/TimerFacade.java similarity index 92% rename from spring-integration-core/src/main/java/org/springframework/integration/support/management/TimerFacade.java rename to spring-integration-core/src/main/java/org/springframework/integration/support/management/metrics/TimerFacade.java index b274847298..d0ce7c4720 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/support/management/TimerFacade.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/support/management/metrics/TimerFacade.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.integration.support.management; +package org.springframework.integration.support.management.metrics; import java.util.concurrent.TimeUnit; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/support/management/metrics/package-info.java b/spring-integration-core/src/main/java/org/springframework/integration/support/management/metrics/package-info.java new file mode 100644 index 0000000000..11cdf3e2de --- /dev/null +++ b/spring-integration-core/src/main/java/org/springframework/integration/support/management/metrics/package-info.java @@ -0,0 +1,4 @@ +/** + * Provides interfaces related to 5.0 metrics. + */ +package org.springframework.integration.support.management.metrics; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/support/management/micrometer/MicrometerMetricsCaptor.java b/spring-integration-core/src/main/java/org/springframework/integration/support/management/micrometer/MicrometerMetricsCaptor.java index 93c09fac5a..6a9f9befd6 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/support/management/micrometer/MicrometerMetricsCaptor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/support/management/micrometer/MicrometerMetricsCaptor.java @@ -22,11 +22,11 @@ import java.util.function.ToDoubleFunction; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.context.ApplicationContext; import org.springframework.context.support.GenericApplicationContext; -import org.springframework.integration.support.management.CounterFacade; -import org.springframework.integration.support.management.GaugeFacade; -import org.springframework.integration.support.management.MetricsCaptor; -import org.springframework.integration.support.management.SampleFacade; -import org.springframework.integration.support.management.TimerFacade; +import org.springframework.integration.support.management.metrics.CounterFacade; +import org.springframework.integration.support.management.metrics.GaugeFacade; +import org.springframework.integration.support.management.metrics.MetricsCaptor; +import org.springframework.integration.support.management.metrics.SampleFacade; +import org.springframework.integration.support.management.metrics.TimerFacade; import org.springframework.util.Assert; import io.micrometer.core.instrument.Counter; diff --git a/spring-integration-core/src/main/java/org/springframework/integration/support/management/micrometer/MicrometerMetricsFactory.java b/spring-integration-core/src/main/java/org/springframework/integration/support/management/micrometer/MicrometerMetricsFactory.java deleted file mode 100644 index 393973f67e..0000000000 --- a/spring-integration-core/src/main/java/org/springframework/integration/support/management/micrometer/MicrometerMetricsFactory.java +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright 2018 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.integration.support.management.micrometer; - -import java.util.function.Function; - -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.SmartInitializingSingleton; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationContextAware; -import org.springframework.integration.support.management.AbstractMessageChannelMetrics; -import org.springframework.integration.support.management.AbstractMessageHandlerMetrics; -import org.springframework.integration.support.management.DefaultMessageChannelMetrics; -import org.springframework.integration.support.management.DefaultMessageHandlerMetrics; -import org.springframework.integration.support.management.MessageSourceMetrics; -import org.springframework.integration.support.management.MessageSourceMetricsConfigurer; -import org.springframework.integration.support.management.MetricsCaptor; -import org.springframework.integration.support.management.MetricsFactory; -import org.springframework.util.Assert; - -/** - * Micrometer implementation of a {@link MetricsFactory}. Configures the resulting - * channel, and handler metrics to use Micrometer metrics instead of the legacy Spring - * Integration metrics. Also implements {@link MessageSourceMetricsConfigurer}, which is - * used to inject a counter into all message source beans that implement - * {@link MessageSourceMetrics}. - * - * @author Gary Russell - * - * @since 5.0.2 - * - * @deprecated - micrometer metrics are now in-built. - * - * @see org.springframework.integration.support.management.IntegrationManagementConfigurer - */ -@Deprecated -public class MicrometerMetricsFactory implements MetricsFactory, MessageSourceMetricsConfigurer, - ApplicationContextAware, SmartInitializingSingleton { - - /** - * Construct an instance with the provided {@link MetricsCaptor}. - * @param captor the registry. - */ - public MicrometerMetricsFactory(MetricsCaptor captor) { - Assert.notNull(captor, "'meterRegistry' cannot be null"); - } - - @Override - public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { - } - - @Override - public void afterSingletonsInstantiated() { - } - - /** - * Provide a function to generate a timer name for the bean name. - * Default: "beanName.timer". - * @param timerNameProvider the timerNameProvider to set - */ - public void setTimerNameProvider(Function timerNameProvider) { - Assert.notNull(timerNameProvider, "'timerNameProvider' cannot be null"); - } - - /** - * Provide a function to generate a counter name for the bean name. - * Default: "beanName.counter". - * @param counterNameProvider the counterNameProvider to set - */ - public void setCounterNameProvider(Function counterNameProvider) { - Assert.notNull(counterNameProvider, "'counterNameProvider' cannot be null"); - } - - /** - * Provide a function to generate an error counter name for the bean name. - * Default: "beanName.errorCounter". - * @param errorCounterNameProvider the counterNameProvider to set - */ - public void setErrorCounterNameProvider(Function errorCounterNameProvider) { - Assert.notNull(errorCounterNameProvider, "'errorCounterNameProvider' cannot be null"); - } - - /** - * Provide a function to generate a receive counter name for the bean name. - * Default: "beanName.counter". - * @param counterNameProvider the counterNameProvider to set - */ - public void setReceiveCounterNameProvider(Function counterNameProvider) { - Assert.notNull(counterNameProvider, "'counterNameProvider' cannot be null"); - } - - /** - * Provide a function to generate a receive error counter name for the bean name. - * Default: "beanName.errorCounter". - * @param errorCounterNameProvider the counterNameProvider to set - */ - public void setReceiveErrorCounterNameProvider(Function errorCounterNameProvider) { - Assert.notNull(errorCounterNameProvider, "'errorCounterNameProvider' cannot be null"); - } - - /** - * Provide a function to generate timer tags for the bean name. - * Default: no tags. - * @param timerTagProvider the timerTagProvider to set - */ - public void setTimerTagProvider(Function timerTagProvider) { - Assert.notNull(timerTagProvider, "'timerTagProvider' cannot be null"); - } - - /** - * Provide a function to generate counter tags for the bean name. - * Default: no tags. - * @param counterTagProvider the counterTagProvider to set - */ - public void setCounterTagProvider(Function counterTagProvider) { - Assert.notNull(counterTagProvider, "'counterTagProvider' cannot be null"); - } - - /** - * Provide a function to generate error counter tags for the bean name. - * Default: no tags. - * @param counterTagProvider the counterTagProvider to set - */ - public void setErrorCounterTagProvider(Function counterTagProvider) { - Assert.notNull(counterTagProvider, "'counterTagProvider' cannot be null"); - } - - /** - * Provide a function to generate receive counter tags for the bean name. - * Default: no tags. - * @param counterTagProvider the counterTagProvider to set - */ - public void setReceiveCounterTagProvider(Function counterTagProvider) { - Assert.notNull(counterTagProvider, "'counterTagProvider' cannot be null"); - } - - /** - * Provide a function to generate receive error counter tags for the bean name. - * Default: no tags. - * @param counterTagProvider the counterTagProvider to set - */ - public void setReceiveErrorCounterTagProvider(Function counterTagProvider) { - Assert.notNull(counterTagProvider, "'counterTagProvider' cannot be null"); - } - - /** - * Provide a function to generate tags for component (channels, handlers, sources) gauges. - * Default: no tags. - * @param componentCountTagProvider the componentCountTagProvider to set - */ - public void setComponentCountTagProvider(Function componentCountTagProvider) { - } - - @Override - public AbstractMessageChannelMetrics createChannelMetrics(String name) { - return new DefaultMessageChannelMetrics(name); - } - - @Override - public AbstractMessageChannelMetrics createPollableChannelMetrics(String name) { - return new DefaultMessageChannelMetrics(name); - } - - @Override - public AbstractMessageHandlerMetrics createHandlerMetrics(String name) { - return new DefaultMessageHandlerMetrics(name); - } - - @Override - public void configure(MessageSourceMetrics metrics, String name) { - } - -}