Skip to content

Commit 6703813

Browse files
authored
KCL: metricsFactory to NullMetricsFactory if metrics level is NONE
* GH-241: Support changing metrics-level for `KclMessageDrivenChannelAdapter` * Add test that `metricsLevel` is set correctly * Modify test body and add author * Add reference to instance variable * Set `metricsFactory` to `NullMetricsFactory` if metrics level is `NONE`
1 parent 428ea43 commit 6703813

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

src/main/java/org/springframework/integration/aws/inbound/kinesis/KclMessageDrivenChannelAdapter.java

+4
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
import software.amazon.kinesis.lifecycle.events.ShutdownRequestedInput;
5353
import software.amazon.kinesis.metrics.MetricsConfig;
5454
import software.amazon.kinesis.metrics.MetricsLevel;
55+
import software.amazon.kinesis.metrics.NullMetricsFactory;
5556
import software.amazon.kinesis.processor.FormerStreamsLeasesDeletionStrategy;
5657
import software.amazon.kinesis.processor.MultiStreamTracker;
5758
import software.amazon.kinesis.processor.RecordProcessorCheckpointer;
@@ -338,6 +339,9 @@ protected void doStart() {
338339

339340
MetricsConfig metricsConfig = this.config.metricsConfig();
340341
metricsConfig.metricsLevel(this.metricsLevel);
342+
if (MetricsLevel.NONE.equals(this.metricsLevel)) {
343+
metricsConfig.metricsFactory(new NullMetricsFactory());
344+
}
341345

342346
this.scheduler =
343347
new Scheduler(

src/test/java/org/springframework/integration/aws/kinesis/KclMessageDrivenChannelAdapterTests.java

+14-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@
2828
import software.amazon.awssdk.services.kinesis.model.Consumer;
2929
import software.amazon.kinesis.common.InitialPositionInStream;
3030
import software.amazon.kinesis.common.InitialPositionInStreamExtended;
31+
import software.amazon.kinesis.metrics.MetricsFactory;
3132
import software.amazon.kinesis.metrics.MetricsLevel;
33+
import software.amazon.kinesis.metrics.NullMetricsFactory;
3234

3335
import org.springframework.beans.factory.annotation.Autowired;
3436
import org.springframework.context.annotation.Bean;
@@ -123,15 +125,25 @@ void kclChannelAdapterReceivesRecords() {
123125
}
124126

125127
@Test
126-
public void metricsLevelOfMetricsFactoryShouldBeSetToMetricsLevelOfAdapter() {
128+
public void metricsLevelOfMetricsConfigShouldBeSetToMetricsLevelOfAdapter() {
127129
MetricsLevel metricsLevel = TestUtils.getPropertyValue(
128130
this.kclMessageDrivenChannelAdapter,
129-
"scheduler.metricsFactory.metricsLevel",
131+
"scheduler.metricsConfig.metricsLevel",
130132
MetricsLevel.class
131133
);
132134
assertThat(metricsLevel).isEqualTo(MetricsLevel.NONE);
133135
}
134136

137+
@Test
138+
public void metricsFactoryOfSchedulerShouldBeSetNullMetricsFactoryIfMetricsLevelIsNone() {
139+
MetricsFactory metricsFactory = TestUtils.getPropertyValue(
140+
this.kclMessageDrivenChannelAdapter,
141+
"scheduler.metricsFactory",
142+
MetricsFactory.class
143+
);
144+
assertThat(metricsFactory).isInstanceOf(NullMetricsFactory.class);
145+
}
146+
135147
@Configuration
136148
@EnableIntegration
137149
public static class TestConfiguration {

0 commit comments

Comments
 (0)