diff --git a/src/main/java/org/fireflyframework/data/config/ObservabilityAutoConfiguration.java b/src/main/java/org/fireflyframework/data/config/ObservabilityAutoConfiguration.java index a29809c..4078208 100644 --- a/src/main/java/org/fireflyframework/data/config/ObservabilityAutoConfiguration.java +++ b/src/main/java/org/fireflyframework/data/config/ObservabilityAutoConfiguration.java @@ -27,7 +27,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; @@ -37,6 +39,7 @@ * Auto-configuration for observability features including tracing, metrics, and health checks. */ @AutoConfiguration +@AutoConfigureBefore(DataEnrichmentAutoConfiguration.class) @ConditionalOnProperty(prefix = "firefly.data.orchestration", name = "enabled", havingValue = "true", matchIfMissing = true) @Slf4j public class ObservabilityAutoConfiguration { @@ -46,6 +49,7 @@ public class ObservabilityAutoConfiguration { */ @Bean @ConditionalOnClass(ObservationRegistry.class) + @ConditionalOnMissingBean(JobTracingService.class) @ConditionalOnProperty(prefix = "firefly.data.orchestration.observability", name = "tracing-enabled", havingValue = "true", matchIfMissing = true) public JobTracingService jobTracingService(ObservationRegistry observationRegistry, JobOrchestrationProperties properties, @@ -66,6 +70,7 @@ public JobTracingService jobTracingService(ObservationRegistry observationRegist */ @Bean @ConditionalOnClass(MeterRegistry.class) + @ConditionalOnMissingBean(JobMetricsService.class) @ConditionalOnProperty(prefix = "firefly.data.orchestration.observability", name = "metrics-enabled", havingValue = "true", matchIfMissing = true) public JobMetricsService jobMetricsService(MeterRegistry meterRegistry, JobOrchestrationProperties properties) { @@ -78,6 +83,7 @@ public JobMetricsService jobMetricsService(MeterRegistry meterRegistry, * Creates the job orchestrator health indicator. */ @Bean + @ConditionalOnMissingBean(JobOrchestratorHealthIndicator.class) @ConditionalOnEnabledHealthIndicator("jobOrchestrator") @ConditionalOnProperty(prefix = "firefly.data.orchestration.health-check", name = "enabled", havingValue = "true", matchIfMissing = true) public JobOrchestratorHealthIndicator jobOrchestratorHealthIndicator( diff --git a/src/main/java/org/fireflyframework/data/config/StepBridgeConfiguration.java b/src/main/java/org/fireflyframework/data/config/StepBridgeConfiguration.java index 7f09f78..a988c19 100644 --- a/src/main/java/org/fireflyframework/data/config/StepBridgeConfiguration.java +++ b/src/main/java/org/fireflyframework/data/config/StepBridgeConfiguration.java @@ -22,6 +22,7 @@ import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; @@ -69,6 +70,7 @@ public class StepBridgeConfiguration { */ @Bean @Primary + @ConditionalOnMissingBean(name = "stepEventPublisherBridge") public StepEventPublisherBridge stepEventPublisherBridge( EventPublisherFactory publisherFactory, StepEventsProperties properties) {