Kafka vs RabbitMQ vs SQS: Message Bus Tradeoffs

Message bus choice depends on what you mean by ‘messaging.’ Stream, queue, or pub-sub all map to different tools.

Kafka: streaming, retention

Kafka is high-throughput streaming with long retention and replay. Ordered partitions, durable storage, consumer-driven offsets; the right call when "I might want to replay this" is part of the requirements.

RabbitMQ: queues, routing

RabbitMQ is queues with rich routing. Lower throughput than Kafka, more flexible than SQS; the right call when routing rules and selective consumption are first-class needs.

SQS: managed simplicity

SQS is AWS-managed simplicity: no broker to operate, near-zero ops, standard or FIFO. The right call for AWS-committed teams that want a queue and want to skip the operational tax of running their own.

The dual-bus pattern

Many teams ship a dual-bus architecture: Kafka for events that other systems consume, SQS for tasks one service produces and another consumes. Each at the right scale; no overlap if you scope by purpose.

Antipatterns

What to do this week

Three moves. (1) Run a 30-day trial of the candidate against your real workload. (2) Compare TCO + workflow fit, not just feature checklists. (3) Decide and commit; running both in parallel is the most expensive option.