Skip to main content
The runtime exposes three credential- and payload-free windows into a running client: a diagnostics snapshot, a bounded observer stream, and optional metrics and tracing bridges.

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 a RepostObserver to receive bounded, credential-free lifecycle events (operation start/end, attempt start/end, retry-delay, cancel):
The observer is intentionally lossy: its queue is bounded (1,024 events), and when it fills, the runtime drops and counts events rather than slowing a send. Observers run on a dedicated dispatch thread (or a borrowed 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:
Micrometer records 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.