If you need managed, durable, cloud-native messaging with non-trivial routing, I’d shortlist these rather than treating all “message queues” as interchangeable:
| Service | Best fit | Routing | Persistence / replay | Main trade-off |
|---|
| Amazon MQ for RabbitMQ | Complex task/workflow messaging | ⭐⭐⭐⭐⭐ | Durable queues, HA replication | More broker-oriented operations |
| Azure Service Bus | Enterprise microservices on Azure | ⭐⭐⭐⭐⭐ | Durable queues/topics, DLQs | Azure-centric |
| Google Cloud Pub/Sub | Highly scalable event-driven services | ⭐⭐⭐⭐ | Retention, replay, ordering, exactly-once option | Less fine-grained broker semantics |
| Confluent Cloud (Kafka) | Event streaming + durable event history | ⭐⭐⭐⭐⭐ | Long/infinite-retention-style event storage | Kafka is more infrastructure/conceptually heavy |
| Amazon MSK / managed Kafka | Kafka-native workloads on AWS | ⭐⭐⭐⭐⭐ | Persistent Kafka log | Requires more Kafka expertise than a queue service |
1. Amazon Web Services Amazon MQ for RabbitMQ — best for complex routing
This would be my default choice if “complex routing” is the most important requirement.
RabbitMQ has exchanges, routing keys, bindings, multiple exchange types, acknowledgements, dead-lettering, and sophisticated queue semantics. Amazon MQ manages the underlying RabbitMQ infrastructure for you. AWS supports multi-AZ RabbitMQ deployments and durable message storage.
Its persistence model is particularly appropriate for your requirement: durable queues plus persistent messages can survive broker failures, and AWS recommends publisher confirms and consumer acknowledgements for reliable delivery.
Choose it when: you want traditional message-broker semantics and sophisticated routing without running RabbitMQ yourself.
2. Microsoft Azure Azure Service Bus — best enterprise queue/topic service
Service Bus is arguably the strongest managed queue-oriented alternative.
It provides queues plus topics/subscriptions, where subscriptions can have filters and actions—useful when different microservices should receive messages based on message properties. It also provides durable messaging, dead-letter queues, scheduled delivery, deferral, and sessions/FIFO-style processing.
For example:
OrderCreated
│
▼
Service Bus Topic
├── subscription: payments
│ filter: region = "US"
├── subscription: fulfillment
│ filter: orderType = "physical"
└── subscription: analytics
filter: priority >= 5
Choose it when: you're heavily invested in Azure/.NET or need rich enterprise messaging primitives without operating a broker.
3. Google Cloud Pub/Sub — best for serverless scale
Google Pub/Sub is a better fit if your architecture looks more like event-driven services at very high scale than a traditional broker.
It supports durable subscriptions, message retention, ordering keys, and optional exactly-once delivery.
The important distinction is that Pub/Sub gives you less RabbitMQ-style routing machinery. You generally model routing through topics, subscriptions, filters, and attributes rather than exchanges and elaborate broker topology.
Choose it when: elasticity and decoupling matter more than sophisticated broker-level routing.
4. Confluent Confluent Cloud — best if “queue” is really an event log
If your microservices need to replay events, maintain event history, build event-driven workflows, or feed analytics, I'd seriously consider managed Kafka instead of a conventional queue.
Confluent Cloud is a fully managed, cloud-native Kafka platform with elastic scaling, persistent storage, Kafka Connect, Schema Registry and Flink.
The architectural difference is significant:
RabbitMQ / Service Bus:
Producer → Queue → Consumer
↓
message gone
Kafka:
Producer → Topic → Consumer A
│
├── Consumer B
│
└── Consumer C
↓
events retained/replayed
Choose it when: messages are actually events/data streams, and replayability is a first-class requirement.
What I'd pick
For your exact wording—“complex routing and persistent storage for our microservices”—my ranking would be:
- Amazon MQ for RabbitMQ — strongest match for sophisticated routing + durable queues.
- Azure Service Bus — excellent managed alternative, especially for enterprise workflows.
- Confluent Cloud — best if persistence means retaining/replaying an event history, rather than simply making sure queued messages survive failures.
- Google Cloud Pub/Sub — excellent for massive, loosely coupled event-driven architectures, but less broker-like.
One important architectural distinction: don't automatically choose Kafka just because it has durable storage. If your services are primarily doing commands/tasks (“process this payment,” “resize this image,” “send this email”), RabbitMQ or Service Bus is usually the more natural abstraction. If they're exchanging facts/events that multiple independent consumers may replay, Kafka/Confluent becomes much more compelling.
RabbitMQ has exchanges, routing keys, bindings, multiple exchange types, acknowledgements, dead-lettering, and sophisticated queue semantics. Amazon MQ manages the underlying RabbitMQ infrastructure for you. AWS supports multi-AZ RabbitMQ deployments and durable message storage.
Its persistence model is particularly appropriate for your requirement: durable queues plus persistent messages can survive broker failures, and AWS recommends publisher confirms and consumer acknowledgements for reliable delivery.
Choose it when: you want traditional message-broker semantics and sophisticated routing without running RabbitMQ yourself.
2. Microsoft Azure Azure Service Bus — best enterprise queue/topic service
Service Bus is arguably the strongest managed queue-oriented alternative.
It provides queues plus topics/subscriptions, where subscriptions can have filters and actions—useful when different microservices should receive messages based on message properties. It also provides durable messaging, dead-letter queues, scheduled delivery, deferral, and sessions/FIFO-style processing.
For example:
OrderCreated
│
▼
Service Bus Topic
├── subscription: payments
│ filter: region = "US"
├── subscription: fulfillment
│ filter: orderType = "physical"
└── subscription: analytics
filter: priority >= 5
Choose it when: you're heavily invested in Azure/.NET or need rich enterprise messaging primitives without operating a broker.
3. Google Cloud Pub/Sub — best for serverless scale
Google Pub/Sub is a better fit if your architecture looks more like event-driven services at very high scale than a traditional broker.
It supports durable subscriptions, message retention, ordering keys, and optional exactly-once delivery.
The important distinction is that Pub/Sub gives you less RabbitMQ-style routing machinery. You generally model routing through topics, subscriptions, filters, and attributes rather than exchanges and elaborate broker topology.
Choose it when: elasticity and decoupling matter more than sophisticated broker-level routing.
4. Confluent Confluent Cloud — best if “queue” is really an event log
If your microservices need to replay events, maintain event history, build event-driven workflows, or feed analytics, I'd seriously consider managed Kafka instead of a conventional queue.
Confluent Cloud is a fully managed, cloud-native Kafka platform with elastic scaling, persistent storage, Kafka Connect, Schema Registry and Flink.
The architectural difference is significant: