PGMQ
SQL messages with a visibility timeout and application-owned consumers.
View pinned source / version 8efb078dbe7a · Features reviewed at this pinned revision. Release names are not the benchmark adapter version.
What this system is built around
SQL messages with a visibility timeout and application-owned consumers.
A SQL message primitive for applications that want control over polling, visibility renewal, acknowledgement and archival. It is a smaller delivery contract than a framework that owns handlers, attempt budgets and job lifecycles.
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
DocumentedSQL reads lock selected rows with SKIP LOCKED and update visibility/read count. Application consumers choose their worker counts; FIFO group APIs provide a separate ordering mode.
Transactional enqueue
Documentedpgmq.send is a SQL INSERT function, so producers can call it inside the same PostgreSQL transaction as application writes. This is a database API, not a separate broker.
Crash recovery & retries
Qualifiedread hides a message for a visibility timeout; if it is not deleted or archived, it becomes available again. The upstream exactly-once wording is limited to that timeout and is not an external-side-effect guarantee.
Delayed & recurring work
Qualifiedsend and send_batch accept relative delays or timestamps. No recurring/cron job scheduler was verified in the reviewed core API.
Uniqueness / deduplication
Not verifiedNo insertion deduplication guarantee was verified for the reviewed send API. FIFO group ordering is a different feature from deduplication.
Postgres extension required
Optional / qualifiedThe upstream supports both packaged pgmq extension installation and SQL-only installation of its objects. The benchmark repository uses the extension distribution. Current README states PostgreSQL 14–18.
Operator interface
Not verifiedNo official standalone operations dashboard was verified in the reviewed upstream core sources.
Tradeoffs to carry into a test
Applications must set or extend visibility appropriately and explicitly delete/archive after success.
Recovery and retriesThere is no verified core automatic exponential backoff/max-attempt job policy; read_ct is available for application policy.
Recovery and retries Claims and concurrencyExternal operations can repeat after visibility expiry.
Recovery and retries