Skip to content

Commit 75b198d

Browse files
committed
ObservationPatterns as property placeholder
Make an `@EnableIntegrationManagement.observationPatterns` as property placeholder aware and also support comma-separated values
1 parent 7bb330a commit 75b198d

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

spring-integration-core/src/main/java/org/springframework/integration/config/EnableIntegrationManagement.java

+1
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
* None by default - no unconditional observation instrumentation.
6969
* Can be set to {@code *} to instrumentation all the integration components.
7070
* The pattern can start with {@code !} to negate the matching.
71+
* The value can be a property placeholder and/or comma-separated.
7172
* @since 6.0
7273
* @see org.springframework.integration.support.utils.PatternMatchUtils#smartMatch(String, String...)
7374
*/

spring-integration-core/src/main/java/org/springframework/integration/config/IntegrationManagementConfiguration.java

+14-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@
1616

1717
package org.springframework.integration.config;
1818

19+
import java.util.HashSet;
1920
import java.util.Map;
21+
import java.util.Set;
2022

2123
import org.springframework.beans.factory.ObjectProvider;
2224
import org.springframework.beans.factory.config.BeanDefinition;
@@ -32,6 +34,7 @@
3234
import org.springframework.util.Assert;
3335

3436
import io.micrometer.observation.ObservationRegistry;
37+
import org.springframework.util.StringUtils;
3538

3639
/**
3740
* {@code @Configuration} class that registers a {@link IntegrationManagementConfigurer} bean.
@@ -75,12 +78,22 @@ public IntegrationManagementConfigurer managementConfigurer(
7578
Boolean.parseBoolean(this.environment.resolvePlaceholders(
7679
(String) this.attributes.get("defaultLoggingEnabled"))));
7780
configurer.setMetricsCaptorProvider(metricsCaptorProvider);
78-
String[] observationPatterns = (String[]) this.attributes.get("observationPatterns");
81+
String[] observationPatterns = obtainObservationPatterns();
7982
if (observationPatterns.length > 0) {
8083
configurer.setObservationPatterns(observationPatterns);
8184
configurer.setObservationRegistry(observationRegistryProvider);
8285
}
8386
return configurer;
8487
}
8588

89+
private String[] obtainObservationPatterns() {
90+
Set<String> patterns = new HashSet<>();
91+
String[] observationPatterns = (String[]) this.attributes.get("observationPatterns");
92+
for (String observationPattern : observationPatterns) {
93+
String pattern = this.environment.resolvePlaceholders(observationPattern);
94+
patterns.addAll(StringUtils.commaDelimitedListToSet(pattern));
95+
}
96+
return patterns.toArray(new String[0]);
97+
}
98+
8699
}

spring-integration-core/src/test/java/org/springframework/integration/support/management/observation/IntegrationObservabilityZipkinTests.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,9 @@ public SampleTestRunnerConsumer yourCode() {
106106

107107
@Configuration
108108
@EnableIntegration
109-
@EnableIntegrationManagement(observationPatterns = { "observedEndpoint", "testInboundGateway" })
109+
@EnableIntegrationManagement(
110+
observationPatterns =
111+
"${spring.integration.management.observation-patterns:observedEndpoint,testInboundGateway}")
110112
public static class ObservationIntegrationTestConfiguration {
111113

112114
CountDownLatch observedHandlerLatch = new CountDownLatch(1);

0 commit comments

Comments
 (0)