Package io.outbox.jdbc.purge
Class AbstractJdbcAgeBasedPurger
java.lang.Object
io.outbox.jdbc.purge.AbstractJdbcAgeBasedPurger
- All Implemented Interfaces:
EventPurger
- Direct Known Subclasses:
H2AgeBasedPurger,MySqlAgeBasedPurger,PostgresAgeBasedPurger
Base JDBC age-based purger that deletes all events older than a
cutoff, regardless of status.
Designed for CDC (Change Data Capture) scenarios where no dispatcher or poller marks events as DONE. Events are consumed externally (e.g. via Debezium reading the WAL/binlog), so the only safe criterion for cleanup is age.
Default SQL uses a subquery-based DELETE that works for H2 and
PostgreSQL. MySQL overrides with DELETE ... ORDER BY ... LIMIT.
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionintpurge(Connection conn, Instant before, int limit) Deletes all events older thanbefore, up tolimitrows.protected String
-
Field Details
-
DEFAULT_TABLE
- See Also:
-
-
Constructor Details
-
AbstractJdbcAgeBasedPurger
protected AbstractJdbcAgeBasedPurger() -
AbstractJdbcAgeBasedPurger
-
-
Method Details
-
tableName
-
purge
Deletes all events older thanbefore, up tolimitrows.Default implementation uses a subquery to limit the batch size, which works for H2 and PostgreSQL. MySQL overrides with
DELETE ... ORDER BY ... LIMIT.- Specified by:
purgein interfaceEventPurger- Parameters:
conn- the JDBC connection (caller controls transaction)before- delete events wheredone_at < before(orcreated_at < beforeifdone_atis null)limit- maximum number of rows to delete in this batch- Returns:
- the number of rows actually deleted
-