INT-4392: Polishing
JIRA: https://jira.spring.io/browse/INT-4392 Avoid the need for reflection on the `MicrometerMetricsCaptor`. - move facade interfaces to a sub-package. Remove deprecated `MicrometerMetricsFactory.
This commit is contained in:
committed by
Artem Bilan
parent
a4eb4ec9b1
commit
7f20dd1b2a
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.integration.support.management;
|
||||
package org.springframework.integration.support.management.metrics;
|
||||
|
||||
/**
|
||||
* @author Gary Russell
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.integration.support.management;
|
||||
package org.springframework.integration.support.management.metrics;
|
||||
|
||||
/**
|
||||
* @author Gary Russell
|
||||
@@ -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;
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.integration.support.management;
|
||||
package org.springframework.integration.support.management.metrics;
|
||||
|
||||
/**
|
||||
* @author Gary Russell
|
||||
@@ -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;
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
/**
|
||||
* Provides interfaces related to 5.0 metrics.
|
||||
*/
|
||||
package org.springframework.integration.support.management.metrics;
|
||||
@@ -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;
|
||||
|
||||
@@ -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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String[]> 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<String, String[]> 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<String, String[]> 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<String, String[]> 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<String, String[]> 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<String, String[]> 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) {
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user