{"slug": "pgmq", "name": "pgmq", "category": "databases", "category_name": "Databases", "description": "", "recommenders": 4, "commenters": 6, "warners": 0, "score": 4.142, "rising": -0.31, "first": "2025-11-21", "latest": "2026-09-02", "why": "Pgmq though, is \"just a bunch of tables\". It's going to be a lot easier to figure out what's going on.", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 7, "neutral": 3, "compare": 0, "warn": 0}, "spark": [0, 0, 2, 0, 0, 0, 1, 1, 2, 0, 1, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "Pgmq though, is \"just a bunch of tables\". It's going to be a lot easier to figure out what's going on.", "kind": "", "icon": true, "domain": null, "github_repo": "github.com/pgmq/pgmq", "official_url": "https://github.com/pgmq/pgmq", "pricing": "", "aliases": ["pgmq"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 792614273, "item_id": 49538392, "url": "https://news.ycombinator.com/item?id=49538392", "by": "cpursley", "date": "2026-09-02", "version": null, "stance": "recommend", "quote": "pgmq does most of the work", "excerpt": "Ha, I feel attacked: https://github.com/agoodway/pgflow ^ this one is pretty cool, pgmq does most of the work.", "context": "", "use_case": "", "switched_from": "", "story": "Ending my elixir exploratory writing"}, {"id": 780908560, "item_id": 48806785, "url": "https://news.ycombinator.com/item?id=48806785", "by": "nhumrich", "date": "2026-07-06", "version": null, "stance": "recommend", "quote": "Pgmq though, is \"just a bunch of tables\". It's going to be a lot easier to figure out what's going on.", "excerpt": "For these specifically? Way easier than rabbitMQ. I love rabbitmq. It's an amazing technology, and if you need a high throughout message bus, it's still a better goto. But.. it does require quite a lot of expertise and know how to operate. Paged at 2am, you will likely get very frustrated. Pgmq though, is \"just a bunch of tables\". It's going to be a lot easier to figure out what's going on. You already understand tra", "context": "", "use_case": "message queue in Postgres", "switched_from": "", "story": "You probably don't need another database"}, {"id": 780496352, "item_id": 48781022, "url": "https://news.ycombinator.com/item?id=48781022", "by": "nextaccountic", "date": "2026-07-03", "version": null, "stance": "recommend", "quote": "Yep. That's why I will always recommend https://github.com/pgmq/pgmq/", "excerpt": "Yep. That's why I will always recommend https://github.com/pgmq/pgmq/", "context": "", "use_case": "", "switched_from": "", "story": "Postgres transactions are a distributed systems superpower"}, {"id": 774736864, "item_id": 48421054, "url": "https://news.ycombinator.com/item?id=48421054", "by": "nextaccountic", "date": "2026-06-05", "version": null, "stance": "recommend", "quote": "I like pgmq", "excerpt": "I like pgmq https://github.com/pgmq/pgmq", "context": "", "use_case": "Postgres message queue", "switched_from": "", "story": "pg_durable: Microsoft open sources in-database durable execution"}, {"id": 773021249, "item_id": 48313828, "url": "https://news.ycombinator.com/item?id=48313828", "by": "cpursley", "date": "2026-05-28", "version": null, "stance": "recommend", "quote": "it's built on pgmq (which does the heavy lifting, making it backend agnostic)", "excerpt": "PgFlow is pretty awesome for DAG workflows - it's built on pgmq (which does the heavy lifting, making it backend agnostic). Typescript: https://www.pgflow.dev Elixir: https://github.com/agoodway/pgflow/blob/main/docs/COMPARISON.md#other-workflow-engines", "context": "", "use_case": "", "switched_from": "", "story": "Just Use Postgres for Durable Workflows"}]}], "caveats": [], "who": [], "tags": [], "use_cases": ["postgres message queue", "message queue in postgres"], "compared": [{"slug": "postgresql", "name": "PostgreSQL", "co": 3, "switched_from": 0, "switched_to": 0}], "makers": [{"id": 741215584, "item_id": 46325974, "url": "https://news.ycombinator.com/item?id=46325974", "by": "chuckhend", "date": "2025-12-19", "version": null, "stance": "neutral", "quote": "We have been (slowly) working on some fairness related queueing features over in pgmq", "excerpt": "Helpful read, thanks for sharing! We have been (slowly) working on some fairness related queueing features over in pgmq for a bit too https://github.com/pgmq/pgmq/pull/442. It does get complicated on Postgres IMO.", "context": "", "use_case": "", "switched_from": "", "story": "How to think about durable execution"}], "threads": [{"url": "https://news.ycombinator.com/item?id=49534921", "title": "Ending my elixir exploratory writing", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48805564", "title": "You probably don't need another database", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48765639", "title": "Postgres transactions are a distributed systems superpower", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48414367", "title": "pg_durable: Microsoft open sources in-database durable execution", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48313909", "title": "item 48313909", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48313530", "title": "Just Use Postgres for Durable Workflows", "mentions": 1}], "sentiment_by_month": {"2025-11": {"neutral": 1}, "2025-12": {}, "2026-01": {"neutral": 1, "recommend": 2}, "2026-02": {"neutral": 1}, "2026-03": {}, "2026-04": {}, "2026-05": {"recommend": 1}, "2026-06": {"recommend": 1}, "2026-07": {"recommend": 2}, "2026-08": {}, "2026-09": {"recommend": 1}, "2026-10": {}}, "versions": [], "version_unnamed": 0, "family_ref": null, "runs_on": null, "lines": [], "quotes": [{"id": 792614273, "item_id": 49538392, "url": "https://news.ycombinator.com/item?id=49538392", "by": "cpursley", "date": "2026-09-02", "version": null, "stance": "recommend", "quote": "pgmq does most of the work", "excerpt": "Ha, I feel attacked: https://github.com/agoodway/pgflow ^ this one is pretty cool, pgmq does most of the work.", "context": "", "use_case": "", "switched_from": "", "story": "Ending my elixir exploratory writing"}, {"id": 780908560, "item_id": 48806785, "url": "https://news.ycombinator.com/item?id=48806785", "by": "nhumrich", "date": "2026-07-06", "version": null, "stance": "recommend", "quote": "Pgmq though, is \"just a bunch of tables\". It's going to be a lot easier to figure out what's going on.", "excerpt": "For these specifically? Way easier than rabbitMQ. I love rabbitmq. It's an amazing technology, and if you need a high throughout message bus, it's still a better goto. But.. it does require quite a lot of expertise and know how to operate. Paged at 2am, you will likely get very frustrated. Pgmq though, is \"just a bunch of tables\". It's going to be a lot easier to figure out what's going on. You already understand tra", "context": "", "use_case": "message queue in Postgres", "switched_from": "", "story": "You probably don't need another database"}, {"id": 780496352, "item_id": 48781022, "url": "https://news.ycombinator.com/item?id=48781022", "by": "nextaccountic", "date": "2026-07-03", "version": null, "stance": "recommend", "quote": "Yep. That's why I will always recommend https://github.com/pgmq/pgmq/", "excerpt": "Yep. That's why I will always recommend https://github.com/pgmq/pgmq/", "context": "", "use_case": "", "switched_from": "", "story": "Postgres transactions are a distributed systems superpower"}, {"id": 774736864, "item_id": 48421054, "url": "https://news.ycombinator.com/item?id=48421054", "by": "nextaccountic", "date": "2026-06-05", "version": null, "stance": "recommend", "quote": "I like pgmq", "excerpt": "I like pgmq https://github.com/pgmq/pgmq", "context": "", "use_case": "Postgres message queue", "switched_from": "", "story": "pg_durable: Microsoft open sources in-database durable execution"}, {"id": 773115168, "item_id": 48319698, "url": "https://news.ycombinator.com/item?id=48319698", "by": "cpursley", "date": "2026-05-28", "version": null, "stance": "neutral", "quote": "", "excerpt": "https://github.com/pgmq/pgmq", "context": "", "use_case": "", "switched_from": "", "story": null}, {"id": 773021249, "item_id": 48313828, "url": "https://news.ycombinator.com/item?id=48313828", "by": "cpursley", "date": "2026-05-28", "version": null, "stance": "recommend", "quote": "it's built on pgmq (which does the heavy lifting, making it backend agnostic)", "excerpt": "PgFlow is pretty awesome for DAG workflows - it's built on pgmq (which does the heavy lifting, making it backend agnostic). Typescript: https://www.pgflow.dev Elixir: https://github.com/agoodway/pgflow/blob/main/docs/COMPARISON.md#other-workflow-engines", "context": "", "use_case": "", "switched_from": "", "story": "Just Use Postgres for Durable Workflows"}, {"id": 751916226, "item_id": 46994764, "url": "https://news.ycombinator.com/item?id=46994764", "by": "cpursley", "date": "2026-02-12", "version": null, "stance": "recommend", "quote": "pair well with pgmq and pg_cron for scheduled work", "excerpt": "Yes, and I imagine pgclaw would pair well with pgmq and pg_cron for scheduled work. Postgres really is enough: https://postgresisenough.dev", "context": "", "use_case": "", "switched_from": "", "story": null}, {"id": 750501233, "item_id": 46906327, "url": "https://news.ycombinator.com/item?id=46906327", "by": "cpursley", "date": "2026-02-05", "version": null, "stance": "neutral", "quote": "Working on something now that uses pgmq + Elixir for workflows", "excerpt": "This is the killer combo. Working on something now that uses pgmq + Elixir for workflows: https://github.com/agoodway/pgflow", "context": "", "use_case": "", "switched_from": "", "story": "It's 2026, Just Use Postgres"}, {"id": 748808354, "item_id": 46800522, "url": "https://news.ycombinator.com/item?id=46800522", "by": "cpursley", "date": "2026-01-28", "version": null, "stance": "recommend", "quote": "based on pgmq (rust) doing the heavy lifting", "excerpt": "Oban is cool but I really like the idea of pgflow.dev, which is based on pgmq (rust) doing the heavy lifting as it makes it language agnostic (all the important parts live in Postgres). I've started an Elixir adapter which really is just a DSL and poller, could do the same in Python, etc. https://github.com/agoodway/pgflow", "context": "", "use_case": "", "switched_from": "", "story": "Oban, the job processing framework from Elixir, has come to Python"}, {"id": 748113168, "item_id": 46757073, "url": "https://news.ycombinator.com/item?id=46757073", "by": "cpursley", "date": "2026-01-25", "version": null, "stance": "recommend", "quote": "https://github.com/pgmq/pgmq", "excerpt": "https://github.com/pgmq/pgmq", "context": "", "use_case": "", "switched_from": "", "story": "Using PostgreSQL as a Dead Letter Queue for Event-Driven Systems"}, {"id": 745853840, "item_id": 46615865, "url": "https://news.ycombinator.com/item?id=46615865", "by": "saberd", "date": "2026-01-14", "version": null, "stance": "recommend", "quote": "We use pgmq with the pgmq-go client, and it has clients in many different languages, it's amazing.", "excerpt": "We use pgmq with the pgmq-go client, and it has clients in many different languages, it's amazing. The queues persist on disk and visualizations of queues can easily be made with grafana or just pure sql requests. The fact that the queues lives in the same database as all the other data is also a huge benefit if the 5-15ms time penalty is not an issue.", "context": "", "use_case": "", "switched_from": "", "story": "I Love You, Redis, but I'm Leaving You for SolidQueue"}, {"id": 745261985, "item_id": 46578874, "url": "https://news.ycombinator.com/item?id=46578874", "by": "jumski", "date": "2026-01-11", "version": null, "stance": "neutral", "quote": "using pgmq for queues", "excerpt": "I'm building a Postgres-native workflow engine using pgmq for queues and TypeScript worker. Workflows compile to definitions (SQL rows), letting Postgres orchestrate the DAG as state machines. The TypeScript DSL is type-safe with inferred inputs/outputs across dependencies with full autocomplete. Declarative and functional in nature. Just a manifest wiring functions into a DAG and a Postgres SQL functions that manage", "context": "", "use_case": "", "switched_from": "", "story": "Ask HN: What Are You Working On? (January 2026)"}, {"id": 736158928, "item_id": 46009933, "url": "https://news.ycombinator.com/item?id=46009933", "by": "the_mitsuhiko", "date": "2025-11-21", "version": null, "stance": "neutral", "quote": "pgmq which I used a lot.", "excerpt": "I think pgqueuer is like pgmq which I used a lot. pgmq is just the queue part, absurd does the state storage. I wrote some more about why it exists here: https://lucumr.pocoo.org/2025/11/3/absurd-workflows/", "context": "", "use_case": "Postgres message queue", "switched_from": "", "story": "Building a Durable Execution Engine with SQLite"}]}