Comparison · RabbitMQ

RabbitMQ vs Amazon SQS Compared

Amazon SQS is a fully managed queue service that applications call through the AWS API. RabbitMQ is an open-source message broker that you run, or have someone run for you, with exchanges that route each message to the queues that should receive it. This comparison uses the AWS and RabbitMQ documentation as checked on 9 October 2026.

Tyler Eastridge

By Tyler Eastridge, Head of Operations

LinkedIn · Updated

6 min read9 sections
On this page
Short answer

Short answer

Choose Amazon SQS when the application lives in AWS, the pattern is a work queue and nobody wants to run a broker: no nodes to patch, almost no throughput ceiling on standard queues, and billing per request. Choose RabbitMQ when messages need routing by key, pattern or header, when consumers should have messages pushed to them, when a backlog may outlive SQS's 14-day maximum retention, or when the system must run outside AWS. Amazon MQ for RabbitMQ sits between: RabbitMQ on brokers AWS operates, without streams.

RabbitMQ and Amazon SQS on the same criteria

RabbitMQ and Amazon SQS on the same criteria
RabbitMQAmazon SQS
What it isOpen-source broker: producers publish to exchanges, and bindings route copies into queues and streamsAWS-managed queue service called through the SQS API
Queue typesClassic and quorum queues, plus streams for replayable logsStandard (at least once, best-effort order) and FIFO (ordered per message group)
ThroughputSet by your cluster's hardware and queue designStandard: nearly unlimited API calls per second. FIFO: 300 calls per second per action, higher in high throughput mode
OrderingPublish order per queue; single active consumer keeps processing in orderBest effort on standard; strict within a message group on FIFO
Message sizeA broker settingUp to 1 MiB; up to 2 GB through the extended client and Amazon S3
RetentionUntil consumed or a TTL expires; streams by size or age4 days by default, configurable from 60 seconds to 14 days
RoutingDirect, fanout, topic and headers exchangesNone in SQS; fan-out and filtering through Amazon SNS
ProtocolsAMQP 0-9-1 and AMQP 1.0 in core; MQTT, STOMP and the stream protocol through pluginsAWS SDKs and the SQS API; JMS 1.1 point-to-point through a Java library
Table · RabbitMQ and Amazon SQS on the same criteria. Scroll sideways on small screens.

SQS standard vs FIFO queues

A standard queue supports nearly unlimited API calls per second, stores copies of each message across multiple Availability Zones, and delivers at least once with best-effort ordering, so consumers must tolerate duplicates. A FIFO queue preserves order within each message group and provides exactly-once processing: with a MessageDeduplicationId or content-based deduplication, a send retried within the 5-minute deduplication interval adds no duplicate.

FIFO pays in throughput. Without high throughput mode, each partition handles 300 transactions per second per API action, or 3,000 messages per second with batches of 10. High throughput mode raises the limit per Region, from 2,400 non-batched calls per second up to 70,000 in US East (N. Virginia), US West (Oregon) and Europe (Ireland).

Visibility timeout vs acknowledgements

A received SQS message is hidden for the visibility timeout, 30 seconds by default and up to 12 hours, and the consumer deletes it when the work is done. If it does not, the message reappears for another consumer; ChangeMessageVisibility extends the timer for long jobs. A redrive policy moves a message to a dead-letter queue after maxReceiveCount receives; AWS advises against one where FIFO order must never break.

In RabbitMQ, a manually acknowledged message stays queued until the consumer acknowledges it, and is requeued if the channel closes first. Quorum queues confirm a publish once a majority of replicas hold it, enforce a delivery acknowledgement timeout and dead-letter poison messages after a delivery limit, so retry policy is broker configuration, not consumer code.

Routing, exchanges and fan-out

SQS has no routing layer: a producer sends to one queue. Fan-out on AWS means an Amazon SNS topic with SQS queues subscribed, where a filter policy on message attributes or the JSON body selects what each queue receives. In RabbitMQ, producers publish to an exchange and bindings decide which queues get a copy, by exact routing key, topic pattern, header match or to all bound queues. A new consumer is a new binding, not a producer change.

Quorum queues, streams and replay

RabbitMQ quorum queues are replicated with Raft and are the documented default for a highly available queue. Streams are always persistent and replicated, readers consume without removing messages, retention is set by age or size, and super streams partition a stream across nodes. SQS has nothing equivalent: a deleted message cannot be read again, and an undeleted one expires at the end of the retention period.

Latency and protocols

RabbitMQ pushes messages to registered consumers over a long-lived connection, with prefetch limiting how many are unacknowledged at once. SQS consumers poll with ReceiveMessage; long polling waits up to 20 seconds for a message to arrive, which cuts empty responses, and one call returns up to 10 messages. No published figure holds for your network, message sizes and durability settings, so measure end-to-end latency yourself.

On protocols, RabbitMQ has spoken AMQP 1.0 natively since 4.0 alongside AMQP 0-9-1, and supports MQTT 3.1, 3.1.1 and 5.0 through a plugin. SQS clients use the AWS SDKs, or JMS through the Amazon SQS Java Messaging Library.

Operations burden and cost drivers

SQS has no servers to patch or upgrade, and its bill follows requests: every API action counts, each 64 KB chunk of a payload is billed as one request, so a 1 MiB message counts as 16, and FIFO actions are charged at FIFO rates. Data transfer within one Region is free. Model message size, batching and empty receives from short polling.

Self-managed RabbitMQ costs nodes, disks, monitoring and the people who upgrade it and answer alerts, but nothing per message. Amazon MQ bills broker instance hours, storage and data transfer.

Amazon MQ for RabbitMQ: the middle option

Amazon MQ runs RabbitMQ as a single instance in one Availability Zone or a three-node cluster across Availability Zones. It supports RabbitMQ 4.3 and 4.2 on the mq.m7g instance type and 3.13 as the remaining 3.x version, accepts AMQP 0-9-1 and, on RabbitMQ 4, AMQP 1.0. It does not support streams, and AWS warns that creating one results in data loss. Managed RabbitMQ options compared sets it beside the alternatives.

When to choose RabbitMQ or SQS

  1. Is the system AWS-only, with simple work queues and no one to run a broker? SQS.
  2. Do different consumers need different subsets of the same messages? RabbitMQ exchanges, or SNS with filter policies if you stay on SQS.
  3. Could messages wait longer than 14 days, or need replay? RabbitMQ quorum queues or streams.
  4. Do devices speak MQTT, or must the system run on premises or in a second cloud? RabbitMQ.
  5. Want RabbitMQ semantics without running nodes? Amazon MQ, if its versions and the lack of streams fit.

Migration notes

  • Visibility timeout to acknowledgements. Delete-after-processing becomes a manual acknowledgement; long visibility timeouts become the delivery acknowledgement timeout.
  • Redrive to dead-lettering. maxReceiveCount becomes a quorum queue delivery limit plus a dead-letter exchange.
  • Message groups to ordering. FIFO message groups map to per-key queues, a consistent hashing exchange or single active consumer.
  • SNS fan-out to exchanges. Subscriptions and filter policies become bindings.
  • Large payloads. Payloads the extended client offloads to Amazon S3 can stay there, with the RabbitMQ message carrying the S3 reference instead.

For moves to Kafka, Pulsar, NATS or other cloud queues, see RabbitMQ alternatives.

Frequently asked questions

Is SQS faster than RabbitMQ?

SQS standard queues scale without capacity planning; RabbitMQ pushes messages to connected consumers instead of waiting for a poll. Which is faster for you depends on message size, batching, durability settings and network path, so test both.

Does Amazon SQS support exactly-once delivery?

FIFO queues provide exactly-once processing: a send retried within the 5-minute deduplication interval is not added twice, and a received message stays unavailable until it is deleted or its visibility timeout expires. Standard queues deliver at least once. A consumer that misses the visibility timeout still sees the message again, so idempotent processing remains the safe design.

What is the maximum message size in SQS?

1 MiB, raised from 256 KiB in August 2025. The Amazon SQS Extended Client Library for Java or Python handles payloads up to 2 GB by storing the body in Amazon S3 and sending a reference.

Can I run RabbitMQ on AWS instead of using SQS?

Yes: self-managed on EC2 or Kubernetes, Amazon MQ for RabbitMQ, or a managed service operating brokers in your account. All keep exchanges, acknowledgements and AMQP clients; Amazon MQ does not support streams.

RabbitMQ services

Where this gets done

The work behind this page, run by the same engineers who wrote it.

More resources

Other RabbitMQ guides, comparisons and research

From the blog

Recent RabbitMQ articles

Next step

Need this done on your cluster?

AceMQ's senior RabbitMQ engineers support 130+ enterprise clients in 26+ countries under a 15-minute emergency SLA, with direct escalation to the RabbitMQ core team.