Skip to main content

Decision guides

Kafka vs SQS

A durable replayable log against a managed work queue — two different tools that look similar until you need to replay, fan out, or preserve order.

Reviewed 2026-09-21 · next review 2027-03-21

WHAT IS BEING DECIDED How services hand work to each other asynchronously. Kafka is a durable, ordered, replayable log with multiple independent consumer groups. SQS is a managed queue where a message is consumed once and then gone. Teams often frame this as "which messaging system", but they are not the same category of thing. The clarifying question: does more than one consumer need the same message, and will you ever need to reprocess history? HOW TO WEIGH IT Weight replay and fan-out heavily if events represent facts other teams will want later — a durable log lets a new consumer start from the beginning, which a queue cannot offer at any price. Weight operational burden heavily if nobody will own a broker: self-managed Kafka is a substantial commitment, and even managed Kafka carries partition and consumer-group concepts a queue does not. Weight ordering only if you genuinely need it per key. Many systems assume they need global ordering and do not. WHEN EACH WINS SQS wins for task distribution: send work, one worker does it, done. It is nearly free to operate, scales without thought, and its dead-letter handling is built in. For a small team decoupling a slow job from a request, it is almost always the right answer. Kafka wins when events are a shared substrate — multiple consumers, replay after a bug, per-key ordering, or stream processing. It also wins when retention itself is the feature, because the log becomes the integration point rather than a transport. HOW TO DECIDE Answer the fan-out and replay questions first; they usually decide it outright. If neither applies, choose the queue and revisit when a second consumer appears. Adopting Kafka for a workload a queue handles is one of the most common over-engineering patterns in this space — and the cost lands on whoever is on call. See /dataops for the pipeline discipline.

Weigh it yourself

The weights below are a starting suggestion, not a recommendation. Move them to match what your situation actually rewards — the totals are arithmetic on your weights, computed in your browser.

Whether several independent consumers need the same message, and whether you will reprocess history.

0 = does not matter here · 1–5 = increasingly decisive

Whether messages for the same key must be processed in sequence.

0 = does not matter here · 1–5 = increasingly decisive

What it takes to run, upgrade and debug the thing at 3am.

0 = does not matter here · 1–5 = increasingly decisive

Sustained volume before the design needs rethinking.

0 = does not matter here · 1–5 = increasingly decisive

What it costs when you are small, which is when most of these decisions are made.

0 = does not matter here · 1–5 = increasingly decisive

  • Kafka74% of the weight you assigned
  • Amazon SQS70% of the weight you assigned

These are within a few percent of each other. That is a tie, not a winner — decide on something this comparison does not capture, such as what your team already operates well.

Using the suggested starting weights. This is your arithmetic, not a verdict from this site.

How each option rates

Ratings of each option against each criterion, with the reason for each rating
CriterionKafkaAmazon SQS
Fan-out and replay5/5

Independent consumer groups read the same log, and a new consumer can start from the beginning.

1/5

A consumed message is gone; fan-out needs SNS in front and replay is not available at all.

Ordering guarantees5/5

Strict ordering within a partition, so per-key ordering is available by choosing the key.

3/5

FIFO queues give ordering per message group, at a lower throughput ceiling than standard queues.

Operational burden2/5

Partitions, consumer groups, rebalancing and retention are real concepts even on a managed offering.

5/5

Nothing to run, patch or rebalance; dead-letter queues are a configuration setting.

Throughput ceiling5/5

Designed for sustained high volume; throughput is rarely the limit.

4/5

Standard queues scale very high; FIFO queues are meaningfully more constrained.

Cost at low volume2/5

A cluster costs money whether or not you are using it; the floor is high relative to a queue.

5/5

Pay per request with no idle cost, so a quiet queue is nearly free.

When this comparison stops applying

  • You need fan-out but not replay — SNS with SQS subscribers covers that without taking on a log, and is frequently the missed middle option.
  • Your organisation already runs Kafka with an owning team: the marginal cost of one more topic is far below the cost of a second messaging technology.
  • The workload is a scheduled batch rather than a stream, in which case neither is the right tool and an orchestrator is.