All Classes and Interfaces
Class
Description
Base JDBC age-based purger that deletes all events older than a
cutoff, regardless of status.
Base JDBC event purger with default subquery-based SQL that works for H2
and PostgreSQL.
Base JDBC outbox store with standard SQL implementations.
Represents an aggregate type identifier.
Spring Boot demo for outbox framework.
Spring Boot Starter demo — zero-config auto-configuration.
An
EventListener bound to a specific (aggregateType, eventType) pair.Provides JDBC connections for non-transactional outbox operations
(e.g. dispatcher status updates, poller queries).
Thread factory that creates named daemon threads with a sequential suffix.
ConnectionProvider backed by a DataSource.Convenience facade for querying, counting, and replaying DEAD events.
ConcurrentHashMap-based in-flight tracker with optional time-based expiry.Thread-safe registry mapping (aggregateType, eventType) pairs to listeners.
Default implementation of
OutboxWriter that persists events via
OutboxStore within an active TxContext transaction.Bridges
OutboxPoller to the dispatcher's cold queue by implementing
OutboxPollerHandler.Bridges
OutboxWriter to the dispatcher's hot queue by implementing
WriterHook.Result returned by
EventListener.onEvent(EventEnvelope) to control
post-dispatch behavior.Event cannot be processed; immediately mark as DEAD without retry.
Event processed successfully.
Event not yet complete; reschedule after the specified delay.
Immutable event envelope containing metadata and payload for an outbox event.
Builder for
EventEnvelope.Base class for all outbox event processing exceptions.
Cross-cutting hook for observing or modifying event dispatch.
Listener that reacts to outbox events.
Deletes terminal outbox events (DONE and DEAD) older than a given cutoff.
Lifecycle states of an outbox event.
Represents an event type identifier.
Retry policy using exponential backoff with jitter.
JsonCodec implementation backed by Gson.H2 age-based purger.
H2 event purger.
H2 outbox store.
Tracks in-flight events to prevent duplicate concurrent dispatch of the same event.
In-memory
OutboxStore for unit testing without JDBC.JsonCodec implementation backed by Jackson ObjectMapper.Registry for JDBC outbox stores with auto-detection support.
Lightweight JDBC helper to reduce boilerplate in event store implementations.
Lightweight transaction manager for manual JDBC usage.
An active transaction handle.
Codec for JSON serialization/deserialization used by the outbox framework.
Registry for looking up event listeners by (aggregateType, eventType).
Observability hook for exporting outbox counters and gauges to a metrics backend.
Default no-op implementation that discards all metrics.
Micrometer-based implementation of
MetricsExporter.Demonstrates the multi-datasource outbox pattern: two independent H2 databases
("Orders" and "Inventory"), each with its own full outbox stack, sharing a
stateless
EventListener.MySQL age-based purger.
MySQL event purger.
MySQL outbox store.
ConnectionProvider that always returns null.Composite entry point that wires an
OutboxDispatcher, OutboxPoller,
and OutboxWriter into a single AutoCloseable unit.Base builder with shared required and optional parameters.
Builder for multi-node deployments: hot path + claim-based poller locking.
Builder for ordered delivery: poller-only, single worker, no retry.
Builder for single-node deployments: hot path + poller fallback.
Builder for writer-only (CDC) mode: no dispatcher or poller.
Auto-configuration for the outbox framework.
Simple demo showing outbox framework usage without Spring.
Measures hot-path end-to-end latency: write -> afterCommit -> dispatch -> listener callback.
Dual-queue event processor that dispatches outbox events to registered listeners.
Builder for
OutboxDispatcher.Read-only record representing a persisted outbox event row, as returned by
the poller and dispatcher when reading from the database.
Manages the outbox lifecycle: starts the poller after all listeners are registered,
and stops the poller/dispatcher during application shutdown.
Marks a Spring bean as an outbox event listener.
Scans for beans annotated with
OutboxListener and registers them
in the DefaultListenerRegistry.Auto-configuration for Micrometer metrics integration.
Scheduled database scanner that polls for pending outbox events as a fallback
when the hot path is unavailable or events are dropped.
Builder for
OutboxPoller.Measures poller throughput: pollPending/claimPending + markDone per batch.
Callback for events discovered by the
OutboxPoller.Configuration properties for the outbox framework.
Scheduled component that purges terminal outbox events (DONE and DEAD) older
than a configurable retention period.
Builder for
OutboxPurgeScheduler.Persistence contract for outbox events, managing status transitions
through the lifecycle: NEW → DONE, NEW → RETRY → DONE, or NEW → DEAD.
Unchecked exception wrapping JDBC errors thrown by
AbstractJdbcOutboxStore
and its subclasses.Convenience builder for setting up outbox test fixtures without a database.
Builder for
OutboxTestSupport.Measures OutboxWriter.write() throughput (ops/sec) within a JDBC transaction.
Primary entry point for writing events to the outbox within an active transaction.
Thrown when an event payload cannot be deserialized from JSON.
PostgreSQL age-based purger.
PostgreSQL event purger.
PostgreSQL outbox store.
Internal wrapper pairing an
EventEnvelope with its origin queue
and attempt count.Indicates whether an event arrived via the hot path or cold (poller) path.
WriterHook that records all lifecycle invocations for test assertions.Signals a transient failure that may succeed on retry.
Exception thrown by an
EventListener to signal a failed attempt that
should be retried after a handler-specified delay.Strategy for computing the delay before retrying a failed event dispatch.
TxContext implementation that bridges to Spring's transaction infrastructure
via TransactionSynchronizationManager.A simple string-based aggregate type for dynamic scenarios.
A simple string-based event type for dynamic scenarios.
In-memory
TxContext stub for unit testing outbox code without a database.Shared table name validation for JDBC outbox components.
TxContext implementation that stores transaction state in a ThreadLocal.Abstracts the transaction lifecycle so outbox operations can participate in
the caller's transaction without depending on a specific transaction manager.
Signals a deterministic failure that will never succeed on retry.
Thrown when no listener is registered for an event's
(aggregateType, eventType) combination.
Lifecycle hook for
OutboxWriter batch writes, replacing the former
AfterCommitHook with richer before/after semantics.