Java 17+ · zero runtime dependencies · one table
Read the code
git clone https://github.com/ArsalanRC/pg-outbox.git && mvn install
Database says
Broker heard
delivered once
delivered twice
locked AS (
SELECT o.id
FROM outbox o
JOIN candidate c ON c.id = o.id
WHERE o.status = 'PENDING' -- repeated on purpose
AND o.available_at <= now()
AND (o.claimed_at IS NULL OR o.claimed_at < now() - make_interval(secs => ?))
ORDER BY o.id
LIMIT ?
FOR UPDATE OF o SKIP LOCKED
)