PgQue
A shared event log with consumer cursors and batch acknowledgements.
View pinned source / version 4a522584a112 · Repository .gitmodules points to https://github.com/NikolayS/pgque.git, whose canonical GitHub spelling is NikolayS/PgQue. Distinct from pgq/pgq. Current main can contain changes beyond v0.2.2.
What this system is built around
A shared event log with consumer cursors and batch acknowledgements.
A shared event-log and fan-out design when independently advancing consumer groups and batch acknowledgement match the workload. Ticking and maintenance are explicit operating responsibilities.
Editorial fit, based on the cited design. Verify against your workload.Semantics & operating model
Concise claims with their scope intact. “Not verified” means this review did not establish the answer.
Claiming & concurrency
QualifiedIndependent registered consumers each keep a cursor over the shared log. Cooperative subconsumers are experimental; allocation serializes on a subscription row. This is not the default per-job competing-consumer contract.
Transactional enqueue
Documentedsend can join business writes. receive, local database writes and batch ack can commit together; send, ticker and receive must not be collapsed into one transaction because of snapshot visibility.
Crash recovery & retries
DocumentedDefault consumption is at least once. nack schedules a per-event retry and routes exhausted events to a dead-letter table; the application still acknowledges the whole received batch.
Delayed & recurring work
QualifiedRecurring production can use pg_cron. Delayed send_at is an explicitly loaded experimental add-on, not the default stable API.
Uniqueness / deduplication
Not verifiedNo general insert-time unique-job API was verified in the reviewed default interface. Idempotent retry/DLQ operations are not producer deduplication.
Postgres extension required
Optional / qualifiedDefault installation is SQL/PLpgSQL on PostgreSQL 14+ without a C extension. A ticker and maintenance must be driven by pg_cron, pg_timetable or an external process; optional pg_tle packaging has different prerequisites.
Operator interface
Not verifiedThe repository web directory is its marketing/documentation site, not evidence of an operations dashboard.
Tradeoffs to carry into a test
Upstream calls the product/API early-stage; mature PgQ ancestry is not the same as mature new interfaces.
Replace autoattached refs with early-stage status sourcereceive returns a whole batch or errors; max_return is a safety ceiling, not pagination.
Use exact whole-batch receive ceiling source Transaction integrationCooperative consumers and delayed delivery have explicit experimental status.
Claims and concurrency SchedulingBatch-ID APIs do not enforce per-consumer ownership; roles must be designed accordingly.
Use exact ownership statement