diff --git a/pom.xml b/pom.xml index d608feb0..f31a85ff 100755 --- a/pom.xml +++ b/pom.xml @@ -119,6 +119,7 @@ true 17 + 1.10.0-SNAPSHOT diff --git a/spring-cloud-task-core/pom.xml b/spring-cloud-task-core/pom.xml index 4d77103d..6260c310 100755 --- a/spring-cloud-task-core/pom.xml +++ b/spring-cloud-task-core/pom.xml @@ -117,10 +117,12 @@ io.micrometer micrometer-core + ${micrometer.version} io.micrometer micrometer-observation + ${micrometer.version} org.junit.jupiter diff --git a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/DefaultTaskKeyValuesProvider.java b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/DefaultTaskObservationConvention.java similarity index 86% rename from spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/DefaultTaskKeyValuesProvider.java rename to spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/DefaultTaskObservationConvention.java index d37a75ab..65f8250b 100644 --- a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/DefaultTaskKeyValuesProvider.java +++ b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/DefaultTaskObservationConvention.java @@ -25,10 +25,15 @@ import io.micrometer.observation.Observation; * @author Marcin Grzejszczak * @since 3.0.0 */ -public class DefaultTaskKeyValuesProvider implements TaskKeyValuesProvider { +public class DefaultTaskObservationConvention implements TaskObservationConvention { @Override public KeyValues getLowCardinalityKeyValues(TaskObservationContext context) { return KeyValues.of(TaskDocumentedObservation.TaskRunnerTags.BEAN_NAME.of(context.getBeanName())); } + + @Override + public String getName() { + return "spring.cloud.task.runner"; + } } diff --git a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/ObservationApplicationRunner.java b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/ObservationApplicationRunner.java index b143912f..d35c34bd 100644 --- a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/ObservationApplicationRunner.java +++ b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/ObservationApplicationRunner.java @@ -28,7 +28,9 @@ import org.springframework.boot.ApplicationRunner; * * @author Marcin Grzejszczak */ -class ObservationApplicationRunner implements ApplicationRunner, Observation.KeyValuesProviderAware { +class ObservationApplicationRunner implements ApplicationRunner, Observation.KeyValuesProviderAware { + + private static final DefaultTaskObservationConvention INSTANCE = new DefaultTaskObservationConvention(); private final BeanFactory beanFactory; @@ -38,7 +40,7 @@ class ObservationApplicationRunner implements ApplicationRunner, Observation.Key private ObservationRegistry registry; - private TaskKeyValuesProvider keyValuesProvider = new DefaultTaskKeyValuesProvider(); + private TaskObservationConvention taskObservationConvention; ObservationApplicationRunner(BeanFactory beanFactory, ApplicationRunner delegate, String beanName) { this.beanFactory = beanFactory; @@ -49,9 +51,8 @@ class ObservationApplicationRunner implements ApplicationRunner, Observation.Key @Override public void run(ApplicationArguments args) throws Exception { TaskObservationContext context = new TaskObservationContext(this.beanName); - Observation observation = TaskDocumentedObservation.TASK_RUNNER_OBSERVATION.observation(registry(), context) - .contextualName(this.beanName) - .keyValuesProvider(this.keyValuesProvider); + Observation observation = TaskDocumentedObservation.TASK_RUNNER_OBSERVATION.observation(registry(), context, this.taskObservationConvention, INSTANCE) + .contextualName(this.beanName); try (Observation.Scope scope = observation.start().openScope()) { this.delegate.run(args); } @@ -72,7 +73,7 @@ class ObservationApplicationRunner implements ApplicationRunner, Observation.Key } @Override - public void setKeyValuesProvider(TaskKeyValuesProvider keyValuesProvider) { - this.keyValuesProvider = keyValuesProvider; + public void setKeyValuesProvider(TaskObservationConvention keyValuesProvider) { + this.taskObservationConvention = keyValuesProvider; } } diff --git a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/ObservationCommandLineRunner.java b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/ObservationCommandLineRunner.java index 14801f69..03dd459b 100644 --- a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/ObservationCommandLineRunner.java +++ b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/ObservationCommandLineRunner.java @@ -27,7 +27,9 @@ import org.springframework.boot.CommandLineRunner; * * @author Marcin Grzejszczak */ -class ObservationCommandLineRunner implements CommandLineRunner, Observation.KeyValuesProviderAware { +class ObservationCommandLineRunner implements CommandLineRunner, Observation.KeyValuesProviderAware { + + private static final DefaultTaskObservationConvention INSTANCE = new DefaultTaskObservationConvention(); private final BeanFactory beanFactory; @@ -37,7 +39,7 @@ class ObservationCommandLineRunner implements CommandLineRunner, Observation.Key private ObservationRegistry registry; - private TaskKeyValuesProvider keyValuesProvider = new DefaultTaskKeyValuesProvider(); + private TaskObservationConvention taskObservationConvention; ObservationCommandLineRunner(BeanFactory beanFactory, CommandLineRunner delegate, String beanName) { this.beanFactory = beanFactory; @@ -48,9 +50,8 @@ class ObservationCommandLineRunner implements CommandLineRunner, Observation.Key @Override public void run(String... args) throws Exception { TaskObservationContext context = new TaskObservationContext(this.beanName); - Observation observation = TaskDocumentedObservation.TASK_RUNNER_OBSERVATION.observation(registry(), context) - .contextualName(this.beanName) - .keyValuesProvider(this.keyValuesProvider); + Observation observation = TaskDocumentedObservation.TASK_RUNNER_OBSERVATION.observation(registry(), context, this.taskObservationConvention, INSTANCE) + .contextualName(this.beanName); try (Observation.Scope scope = observation.start().openScope()) { this.delegate.run(args); } @@ -71,7 +72,7 @@ class ObservationCommandLineRunner implements CommandLineRunner, Observation.Key } @Override - public void setKeyValuesProvider(TaskKeyValuesProvider keyValuesProvider) { - this.keyValuesProvider = keyValuesProvider; + public void setKeyValuesProvider(TaskObservationConvention keyValuesProvider) { + this.taskObservationConvention = keyValuesProvider; } } diff --git a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/TaskDocumentedObservation.java b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/TaskDocumentedObservation.java index 80747bc6..511e1942 100644 --- a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/TaskDocumentedObservation.java +++ b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/TaskDocumentedObservation.java @@ -17,6 +17,7 @@ package org.springframework.cloud.task.configuration.observation; import io.micrometer.common.docs.KeyName; +import io.micrometer.observation.Observation; import io.micrometer.observation.docs.DocumentedObservation; enum TaskDocumentedObservation implements DocumentedObservation { @@ -25,9 +26,10 @@ enum TaskDocumentedObservation implements DocumentedObservation { * Observation created when a task runner is executed. */ TASK_RUNNER_OBSERVATION { + @Override - public String getName() { - return "spring.cloud.task.runner"; + public Class> getDefaultConvention() { + return DefaultTaskObservationConvention.class; } @Override diff --git a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/TaskKeyValuesProvider.java b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/TaskObservationConvention.java similarity index 89% rename from spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/TaskKeyValuesProvider.java rename to spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/TaskObservationConvention.java index 687438c4..013d0d2e 100644 --- a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/TaskKeyValuesProvider.java +++ b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/TaskObservationConvention.java @@ -24,7 +24,7 @@ import io.micrometer.observation.Observation; * @author Marcin Grzejszczak * @since 3.0.0 */ -public interface TaskKeyValuesProvider extends Observation.KeyValuesProvider { +public interface TaskObservationConvention extends Observation.ObservationConvention { @Override default boolean supportsContext(Observation.Context context) {