diff --git a/fireflyframework-callbacks-core/pom.xml b/fireflyframework-callbacks-core/pom.xml
index 28ac973..320a6b2 100644
--- a/fireflyframework-callbacks-core/pom.xml
+++ b/fireflyframework-callbacks-core/pom.xml
@@ -6,7 +6,7 @@
org.fireflyframework
fireflyframework-callbacks
- 26.04.01
+ 26.05.06
fireflyframework-callbacks-core
diff --git a/fireflyframework-callbacks-core/src/main/java/org/fireflyframework/callbacks/core/observability/CallbackMetrics.java b/fireflyframework-callbacks-core/src/main/java/org/fireflyframework/callbacks/core/observability/CallbackMetrics.java
new file mode 100644
index 0000000..8aa732a
--- /dev/null
+++ b/fireflyframework-callbacks-core/src/main/java/org/fireflyframework/callbacks/core/observability/CallbackMetrics.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2024-2026 Firefly Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.fireflyframework.callbacks.core.observability;
+
+import io.micrometer.core.instrument.MeterRegistry;
+import org.fireflyframework.observability.metrics.FireflyMetricsSupport;
+import reactor.core.publisher.Mono;
+
+/**
+ * Observability instrumentation for the callbacks dispatcher.
+ *
+ * Records:
+ *
+ * - {@code firefly.callbacks.deliveries} — counter tagged by {@code target.id} and
+ * {@code status} (success/failure/retry/cancelled)
+ * - {@code firefly.callbacks.delivery.duration} — timer of dispatch latency,
+ * tagged by {@code target.id}
+ * - {@code firefly.callbacks.retries} — counter of retry attempts,
+ * tagged by {@code target.id}, {@code attempt}
+ * - {@code firefly.callbacks.circuit.opened} — counter of circuit-breaker openings,
+ * tagged by {@code target.id}
+ * - {@code firefly.callbacks.errors} — counter of delivery errors,
+ * tagged by {@code target.id}, {@code error.type}
+ *
+ */
+public class CallbackMetrics extends FireflyMetricsSupport {
+
+ private static final String TAG_TARGET = "target.id";
+ private static final String TAG_ATTEMPT = "attempt";
+
+ public CallbackMetrics(MeterRegistry meterRegistry) {
+ super(meterRegistry, "callbacks");
+ }
+
+ public Mono timedDelivery(String targetId, Mono delivery) {
+ return timed("delivery.duration", delivery, TAG_TARGET, targetId)
+ .doOnSuccess(v -> recordSuccess("deliveries", TAG_TARGET, targetId))
+ .doOnError(e -> {
+ recordFailure("deliveries", e, TAG_TARGET, targetId);
+ recordFailure("errors", e, TAG_TARGET, targetId);
+ });
+ }
+
+ public void recordRetry(String targetId, int attempt) {
+ counter("retries", TAG_TARGET, targetId, TAG_ATTEMPT, String.valueOf(attempt)).increment();
+ }
+
+ public void recordCircuitOpened(String targetId) {
+ counter("circuit.opened", TAG_TARGET, targetId).increment();
+ }
+}
diff --git a/fireflyframework-callbacks-core/src/main/java/org/fireflyframework/callbacks/core/observability/CallbackObservabilityAutoConfiguration.java b/fireflyframework-callbacks-core/src/main/java/org/fireflyframework/callbacks/core/observability/CallbackObservabilityAutoConfiguration.java
new file mode 100644
index 0000000..25a64c3
--- /dev/null
+++ b/fireflyframework-callbacks-core/src/main/java/org/fireflyframework/callbacks/core/observability/CallbackObservabilityAutoConfiguration.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2024-2026 Firefly Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.fireflyframework.callbacks.core.observability;
+
+import io.micrometer.core.instrument.MeterRegistry;
+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.context.annotation.Bean;
+
+/**
+ * Auto-configures {@link CallbackMetrics}.
+ */
+@AutoConfiguration
+@ConditionalOnClass(MeterRegistry.class)
+@ConditionalOnProperty(prefix = "firefly.observability.metrics", name = "enabled",
+ havingValue = "true", matchIfMissing = true)
+public class CallbackObservabilityAutoConfiguration {
+
+ @Bean
+ @ConditionalOnMissingBean
+ @ConditionalOnBean(MeterRegistry.class)
+ CallbackMetrics callbackMetrics(MeterRegistry meterRegistry) {
+ return new CallbackMetrics(meterRegistry);
+ }
+}
diff --git a/fireflyframework-callbacks-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/fireflyframework-callbacks-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..d9e1925
--- /dev/null
+++ b/fireflyframework-callbacks-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+org.fireflyframework.callbacks.core.observability.CallbackObservabilityAutoConfiguration
diff --git a/fireflyframework-callbacks-interfaces/pom.xml b/fireflyframework-callbacks-interfaces/pom.xml
index 9cd70d6..c7c3796 100644
--- a/fireflyframework-callbacks-interfaces/pom.xml
+++ b/fireflyframework-callbacks-interfaces/pom.xml
@@ -6,7 +6,7 @@
org.fireflyframework
fireflyframework-callbacks
- 26.04.01
+ 26.05.06
fireflyframework-callbacks-interfaces
diff --git a/fireflyframework-callbacks-models/pom.xml b/fireflyframework-callbacks-models/pom.xml
index 3bedd6e..0a38851 100644
--- a/fireflyframework-callbacks-models/pom.xml
+++ b/fireflyframework-callbacks-models/pom.xml
@@ -6,7 +6,7 @@
org.fireflyframework
fireflyframework-callbacks
- 26.04.01
+ 26.05.06
fireflyframework-callbacks-models
diff --git a/fireflyframework-callbacks-sdk/pom.xml b/fireflyframework-callbacks-sdk/pom.xml
index a581d58..c1d8ce6 100644
--- a/fireflyframework-callbacks-sdk/pom.xml
+++ b/fireflyframework-callbacks-sdk/pom.xml
@@ -6,7 +6,7 @@
org.fireflyframework
fireflyframework-callbacks
- 26.04.01
+ 26.05.06
fireflyframework-callbacks-sdk
diff --git a/fireflyframework-callbacks-web/pom.xml b/fireflyframework-callbacks-web/pom.xml
index eb0741a..bfa77e4 100644
--- a/fireflyframework-callbacks-web/pom.xml
+++ b/fireflyframework-callbacks-web/pom.xml
@@ -6,7 +6,7 @@
org.fireflyframework
fireflyframework-callbacks
- 26.04.01
+ 26.05.06
fireflyframework-callbacks-web
diff --git a/fireflyframework-callbacks-web/src/test/resources/application-test.yml b/fireflyframework-callbacks-web/src/test/resources/application-test.yml
index 4c1f356..186e1d4 100644
--- a/fireflyframework-callbacks-web/src/test/resources/application-test.yml
+++ b/fireflyframework-callbacks-web/src/test/resources/application-test.yml
@@ -29,6 +29,9 @@ spring:
# Firefly Callbacks Configuration
firefly:
+ observability:
+ health:
+ enabled: false
callbacks:
# listener configuration removed - now using dynamic listeners from database
@@ -68,3 +71,9 @@ logging:
org.fireflyframework.common.eda: DEBUG
org.springframework.data.r2dbc: DEBUG
org.testcontainers: INFO
+
+# Required so apps without a db autoconfig don't crash on the readiness health-group default.
+management:
+ endpoint:
+ health:
+ validate-group-membership: false
diff --git a/pom.xml b/pom.xml
index 5ddc9af..29c34e3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,13 +7,13 @@
org.fireflyframework
fireflyframework-parent
- 26.04.01
+ 26.05.06
org.fireflyframework
fireflyframework-callbacks
- 26.04.01
+ 26.05.06
pom
Firefly Framework - Callbacks Library