TECH_COMPARISON
Kafka vs PostgreSQL as Queue: A Detailed Comparison for System Design
Compare Apache Kafka with PostgreSQL-based queuing (SKIP LOCKED) on throughput, complexity, and when a database queue is good enough.
Kafka vs PostgreSQL as Queue
Not every system needs a dedicated message broker. PostgreSQL can serve as a task queue using SELECT ... FOR UPDATE SKIP LOCKED, and for many workloads, this is the right choice. Kafka is necessary when you outgrow what a database can handle.
The PostgreSQL Queue Pattern
The pattern is simple: create a jobs table, insert rows as tasks, and have workers poll with SELECT * FROM jobs WHERE status = 'pending' ORDER BY id LIMIT 1 FOR UPDATE SKIP LOCKED. The SKIP LOCKED clause lets multiple workers dequeue concurrently without conflicts.*
This approach gives you:
- Transactional consistency: Enqueue a task in the same transaction that writes business data
- No new infrastructure: If you already run PostgreSQL, you have a queue
- ACID guarantees: No message loss, no duplicates (within a transaction)
When PostgreSQL Breaks Down
PostgreSQL queues struggle at scale. Table bloat from frequent inserts and deletes requires aggressive vacuuming. High contention on the jobs table creates lock pressure. At thousands of messages per second, you will see degraded query performance across the entire database.
The Transactional Outbox Advantage
The strongest argument for PostgreSQL-as-queue is the transactional outbox pattern. When you need to write to a database AND publish an event atomically, PostgreSQL lets you do both in one transaction. With Kafka, you need CDC tools like Debezium to capture outbox table changes — adding complexity.
Decision Framework
Start with PostgreSQL if your throughput is under ~1,000 messages/second and you value stack simplicity. Move to Kafka when you need replay, horizontal scaling, or stream processing. This is a common system design interview discussion point — showing you know when NOT to use Kafka demonstrates maturity.
GO DEEPER
Master this topic in our 12-week cohort
Our Advanced System Design cohort covers this and 11 other deep-dive topics with live sessions, assignments, and expert feedback.
// RELATED_COMPARISONS
Kafka vs SQS: A Detailed Comparison for System Design
Compare Apache Kafka and Amazon SQS — throughput, ordering, replay, pricing, and when to choose each for your distributed system architecture.
Kafka vs Pulsar: A Detailed Comparison for System Design
Compare Apache Kafka and Apache Pulsar on architecture, multi-tenancy, geo-replication, and performance for distributed streaming systems.
Redis Streams vs Kafka: A Detailed Comparison for System Design
Compare Redis Streams and Apache Kafka on throughput, persistence, stream processing, and use cases for real-time messaging systems.
Kafka vs Redpanda: A Detailed Comparison for System Design
Compare Apache Kafka and Redpanda on performance, compatibility, operations, and cost to choose the best streaming platform.
NATS vs Kafka: A Detailed Comparison for System Design
Compare NATS and Apache Kafka on latency, persistence, simplicity, and streaming to choose the right messaging system for your needs.
AWS Kinesis vs Kafka: A Detailed Comparison for System Design
Compare Amazon Kinesis and Apache Kafka on throughput, cost, operations, and ecosystem for building real-time streaming pipelines.