On this page
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 | Amazon SQS | |
|---|---|---|
| What it is | Open-source broker: producers publish to exchanges, and bindings route copies into queues and streams | AWS-managed queue service called through the SQS API |
| Queue types | Classic and quorum queues, plus streams for replayable logs | Standard (at least once, best-effort order) and FIFO (ordered per message group) |
| Throughput | Set by your cluster's hardware and queue design | Standard: nearly unlimited API calls per second. FIFO: 300 calls per second per action, higher in high throughput mode |
| Ordering | Publish order per queue; single active consumer keeps processing in order | Best effort on standard; strict within a message group on FIFO |
| Message size | A broker setting | Up to 1 MiB; up to 2 GB through the extended client and Amazon S3 |
| Retention | Until consumed or a TTL expires; streams by size or age | 4 days by default, configurable from 60 seconds to 14 days |
| Routing | Direct, fanout, topic and headers exchanges | None in SQS; fan-out and filtering through Amazon SNS |
| Protocols | AMQP 0-9-1 and AMQP 1.0 in core; MQTT, STOMP and the stream protocol through plugins | AWS SDKs and the SQS API; JMS 1.1 point-to-point through a Java library |
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
- Is the system AWS-only, with simple work queues and no one to run a broker? SQS.
- Do different consumers need different subsets of the same messages? RabbitMQ exchanges, or SNS with filter policies if you stay on SQS.
- Could messages wait longer than 14 days, or need replay? RabbitMQ quorum queues or streams.
- Do devices speak MQTT, or must the system run on premises or in a second cloud? RabbitMQ.
- 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.
maxReceiveCountbecomes 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.
Related
Where this gets done
The work behind this page, run by the same engineers who wrote it.
- 24/7 RabbitMQ support15-minute emergency SLA, versions back to 3.8.x
- Managed RabbitMQ servicesWe run the brokers, on your infrastructure or hosted
- RabbitMQ consultingArchitecture, migration and remediation from senior engineers
- RabbitMQ health checkEngineer-led assessment with a prioritised fix list
- Extended LTS support for RabbitMQ 3.xCVE backports for versions the community no longer patches
- RabbitMQ commercial licensingTanzu RabbitMQ licences from an authorized Broadcom partner
- RabbitMQ troubleshootingLive incidents and recurring faults
- RabbitMQ upgrades3.x to 4.x, planned and executed in your window
- RabbitMQ migrationsFrom IBM MQ, Kafka, cloud brokers or older RabbitMQ
- RabbitMQ implementation and architectureCluster design, DR and go-live
- RabbitMQ corporate trainingAdmin and developer courses taught by working engineers
Other RabbitMQ guides, comparisons and research
- GuideThe RabbitMQ Performance Tuning GuideRead the guide
- GuideThe RabbitMQ Streams GuideRead the guide
- GuideThe RabbitMQ Reliability Guide: Ten Failure Patterns and Their FixesRead the guide
- GuideThe RabbitMQ Disaster Recovery GuideRead the guide
- GuideThe RabbitMQ Clustering and Sizing GuideRead the guide
- GuideThe RabbitMQ on Kubernetes GuideRead the guide
- GuideThe RabbitMQ Migration GuideRead the guide
- GuideThe RabbitMQ Security and Hardening GuideRead the guide
- GuideThe RabbitMQ Monitoring and Alerting GuideRead the guide
- GuideRabbitMQ for AI Agents: Patterns, Setup and PitfallsRead the guide
- GuideCelery and RabbitMQ for LLM Task QueuesRead the guide
- GuideAgent-to-Agent Messaging over AMQP and RabbitMQRead the guide
- ComparisonMessage Broker Support Options ComparedSee the comparison
- ComparisonRabbitMQ vs Kafka vs NATS for AI AgentsSee the comparison
- ResearchWhat Breaks in Production RabbitMQ: 145 Support Tickets, 2023 to 2026Read the research
- ResearchRabbitMQ in Production 2026: What 22 Assessed Estates Actually RunRead the research
- ResearchThe RabbitMQ CVE Register, 2026 EditionRead the research
Recent RabbitMQ articles
- RabbitMQ Cluster Operator vs Helm Chart on KubernetesOct 2026
- RabbitMQ consumer_timeout: Why Consumers VanishOct 2026
- RabbitMQ End of Life and End of Support Dates (3.6 to 4.3)Oct 2026
- VMware Licensing Cost in 2026Sep 2026
- The Tanzu Software in Your VCF You Are Not UsingSep 2026
- Production RabbitMQ Architecture for Enterprise TeamsSep 2026
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.