Amazon MQ is a managed broker service for ActiveMQ (Java, JMS) and RabbitMQ (Erlang, AMQP). If you’re migrating from self-hosted RabbitMQ or ActiveMQ, MQ provides drop-in replacement hosting without re-engineering your application.
Single-Instance (no replication)
└── One broker in one AZ
└── For dev/test only
Active/Standby (multi-AZ)
└── Master in AZ-1, Standby in AZ-2
└── Automatic failover
└── For production
Cluster (RabbitMQ only)
└── Multiple broker nodes across AZs
└── Quorum queues for HA
└── For high throughput
# Download Amazon MQ CA bundle for TLScurl -o /tmp/AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem# For RabbitMQ with TLSchannel = connection.channel()channel.queue_declare(queue='my-queue', durable=True)
Amazon MQ is NOT serverless — you pay for the broker instance 24/7 regardless of usage: At mq.t3.micro (0.065/hr=47/month), you’re paying even if the broker is idle. For serverless pay-per-use messaging, use SQS or SNS.
Amazon MQ requires security groups that allow inbound traffic on the broker ports (61617 for ActiveMQ, 5671 for RabbitMQ SSL): If you can’t connect, check your security group inbound rules allow the correct port from your application’s subnet.
RabbitMQ on Amazon MQ does NOT support all plugins — only pre-approved plugins are available: If you need the shovel plugin or custom Erlang modules, they’re not available. Check the supported plugins list before migrating.
Amazon MQ’s ActiveMQ supports JMS 1.1 — if you need JMS 2.0 features (shared subscriptions), use RabbitMQ instead: JMS 2.0 features like shared subscriptions are only available on RabbitMQ in Amazon MQ.
Amazon MQ broker logs go to CloudWatch Logs — you need to enable logging explicitly: Without enabling logging, you won’t see broker logs. Enable both general and audit logs when creating the broker.