INT-3651: JMX Improvements Documentation
JIRA: https://jira.spring.io/browse/INT-3651 - Add documentation for the new JMX environment - Add the ability to customize the default metrics implementations - Fix LifecycleMessageHandlerMetrics to get a custom `MessageHandlerMetrics` - Add an escape to the bean pattern matcher to handle beans starting with `!` INT-3651: More Docs/Polishing * JavaDocs polishing * Change `jmx.xml` to describe `public void stopActiveComponents(long howLong)` not that removed with `boolean force`
This commit is contained in:
committed by
Artem Bilan
parent
40c4cb0d41
commit
134c7c870b
@@ -22,6 +22,7 @@
|
||||
object-naming-strategy="keyNamer"
|
||||
counts-enabled="foo, !baz, ba*"
|
||||
stats-enabled="fiz, buz"
|
||||
managed-components="\!excluded, f*, b*, q*, t*"
|
||||
metrics-factory="mf" />
|
||||
|
||||
<util:properties id="appProperties">
|
||||
@@ -43,6 +44,10 @@
|
||||
|
||||
<si:channel id="buz" />
|
||||
|
||||
<bean id="mf" class="org.springframework.integration.monitor.DefaultMetricsFactory" />
|
||||
<si:channel id="!excluded" />
|
||||
|
||||
<si:transformer id="transformer" input-channel="foo" expression="payload" />
|
||||
|
||||
<bean id="mf" class="org.springframework.integration.jmx.config.MBeanExporterParserTests$CustomMetrics" />
|
||||
|
||||
</beans>
|
||||
|
||||
@@ -31,9 +31,17 @@ import org.junit.runner.RunWith;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.integration.channel.management.AbstractMessageChannelMetrics;
|
||||
import org.springframework.integration.channel.management.DefaultMessageChannelMetrics;
|
||||
import org.springframework.integration.channel.management.MessageChannelMetrics;
|
||||
import org.springframework.integration.handler.management.AbstractMessageHandlerMetrics;
|
||||
import org.springframework.integration.handler.management.DefaultMessageHandlerMetrics;
|
||||
import org.springframework.integration.handler.management.MessageHandlerMetrics;
|
||||
import org.springframework.integration.monitor.IntegrationMBeanExporter;
|
||||
import org.springframework.integration.monitor.MetricsFactory;
|
||||
import org.springframework.integration.support.management.ExponentialMovingAverage;
|
||||
import org.springframework.integration.support.management.ExponentialMovingAverageRate;
|
||||
import org.springframework.integration.support.management.ExponentialMovingAverageRatio;
|
||||
import org.springframework.integration.test.util.TestUtils;
|
||||
import org.springframework.test.annotation.DirtiesContext;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
@@ -68,6 +76,9 @@ public class MBeanExporterParserTests {
|
||||
MessageChannelMetrics metrics = context.getBean("foo", MessageChannelMetrics.class);
|
||||
assertTrue(metrics.isCountsEnabled());
|
||||
assertFalse(metrics.isStatsEnabled());
|
||||
checkCustomized(metrics);
|
||||
MessageHandlerMetrics handlerMetrics = context.getBean("transformer.handler", MessageHandlerMetrics.class);
|
||||
checkCustomized(handlerMetrics);
|
||||
metrics = context.getBean("bar", MessageChannelMetrics.class);
|
||||
assertTrue(metrics.isCountsEnabled());
|
||||
assertFalse(metrics.isStatsEnabled());
|
||||
@@ -83,9 +94,57 @@ public class MBeanExporterParserTests {
|
||||
metrics = context.getBean("buz", MessageChannelMetrics.class);
|
||||
assertTrue(metrics.isCountsEnabled());
|
||||
assertTrue(metrics.isStatsEnabled());
|
||||
metrics = context.getBean("!excluded", MessageChannelMetrics.class);
|
||||
assertFalse(metrics.isCountsEnabled());
|
||||
assertFalse(metrics.isStatsEnabled());
|
||||
checkCustomized(metrics);
|
||||
MetricsFactory factory = context.getBean(MetricsFactory.class);
|
||||
assertSame(factory, TestUtils.getPropertyValue(exporter, "metricsFactory"));
|
||||
exporter.destroy();
|
||||
}
|
||||
|
||||
private void checkCustomized(MessageChannelMetrics metrics) {
|
||||
assertEquals(20, TestUtils.getPropertyValue(metrics, "channelMetrics.sendDuration.window"));
|
||||
assertEquals(1000000., TestUtils.getPropertyValue(metrics, "channelMetrics.sendDuration.factor", Double.class),
|
||||
.01);
|
||||
assertEquals(30, TestUtils.getPropertyValue(metrics, "channelMetrics.sendErrorRate.window"));
|
||||
assertEquals(2000000.,
|
||||
TestUtils.getPropertyValue(metrics, "channelMetrics.sendErrorRate.period", Double.class), .01);
|
||||
assertEquals(.001 / 120000,
|
||||
TestUtils.getPropertyValue(metrics, "channelMetrics.sendErrorRate.lapse", Double.class), .01);
|
||||
|
||||
assertEquals(40, TestUtils.getPropertyValue(metrics, "channelMetrics.sendSuccessRatio.window"));
|
||||
assertEquals(.001 / 130000, TestUtils.getPropertyValue(metrics, "channelMetrics.sendRate.lapse", Double.class),
|
||||
.01);
|
||||
|
||||
assertEquals(50, TestUtils.getPropertyValue(metrics, "channelMetrics.sendRate.window"));
|
||||
assertEquals(3000000., TestUtils.getPropertyValue(metrics, "channelMetrics.sendRate.period", Double.class), .01);
|
||||
assertEquals(.001 / 140000, TestUtils.getPropertyValue(metrics, "channelMetrics.sendRate.lapse", Double.class),
|
||||
.01);
|
||||
}
|
||||
|
||||
private void checkCustomized(MessageHandlerMetrics metrics) {
|
||||
assertEquals(20, TestUtils.getPropertyValue(metrics, "handlerMetrics.duration.window"));
|
||||
assertEquals(1000000., TestUtils.getPropertyValue(metrics, "handlerMetrics.duration.factor", Double.class),
|
||||
.01);
|
||||
}
|
||||
|
||||
public static class CustomMetrics implements MetricsFactory {
|
||||
|
||||
@Override
|
||||
public AbstractMessageChannelMetrics createChannelMetrics(String name) {
|
||||
return new DefaultMessageChannelMetrics(name,
|
||||
new ExponentialMovingAverage(20, 1000000.),
|
||||
new ExponentialMovingAverageRate(2000, 120000, 30, true),
|
||||
new ExponentialMovingAverageRatio(130000, 40, true),
|
||||
new ExponentialMovingAverageRate(3000, 140000, 50, true));
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractMessageHandlerMetrics createHandlerMetrics(String name) {
|
||||
return new DefaultMessageHandlerMetrics(name, new ExponentialMovingAverage(20, 1000000.));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user