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 extends Observation.ObservationConvention extends Observation.Context>> 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) {