Diagnostics
diagnostics() returns a credential- and payload-free snapshot — live in-flight operations plus saturating counters for admission rejections, dropped observer events, and observer/telemetry failures:
Observers
Register aRepostObserver to receive bounded, credential-free lifecycle events (operation start/end, attempt start/end, retry-delay, cancel):
observerExecutor), never on the transport thread, so a slow or throwing observer can never change or block an application send.
Micrometer and OpenTelemetry
For metrics and traces, add a bridge module and wire it as an observer or telemetry sink — no reflection, no auto-magic:repost.client.operations, repost.client.operation.duration, repost.client.attempts, repost.client.attempt.duration, and repost.client.retry.delay, tagged with outcome, error.code, delivery.state, and http.status.class. OpenTelemetry emits one repost.send span with a repost.send.attempt child per attempt. Both carry only low-cardinality metadata — never payloads or credentials.
Continue
Testing
A recording transport, deterministic clocks, and a no-network guard.
Frameworks
Spring Boot auto-wires these bridges when a registry bean is present.
Reliability
The delivery states and error codes these signals report.