General
What is Amazon MQ?
Amazon MQ is a managed message broker service for Apache ActiveMQ and RabbitMQ that makes it easy to set up and operate message brokers in the cloud. You can directly access the ActiveMQ console, RabbitMQ console, industry standard APIs and protocols for messaging, including JMS, NMS, AMQP 0.9.1, AMQP 1.0, STOMP, MQTTv3, and WebSocket. You can create a new Amazon MQ broker using these standards with a few steps, or migrate existing message brokers to Amazon MQ without rewriting messaging code.
Who should use Amazon MQ?
Amazon MQ is suitable for enterprise IT professionals, developers, and architects who plan to adopt industry standard messaging APIs and protocols to decouple and scale their applications on the cloud without the operational burden of managing the message broker itself.
What does Amazon MQ manage on my behalf?
Amazon MQ manages the process of setting up a message broker and provisioning the infrastructure and open-source broker engine software. Once your broker is up and running, Amazon manages ongoing software upgrades, security updates, fault detection, and recovery.
With a few steps, you can create an Amazon MQ multi-AZ deployment broker. Amazon MQ automatically manages the nodes in the deployment, replicates data for high availability, deploys patches regularly, manages integrations with AWS services, makes important metrics visible, and supports broker engine version upgrades so you can take advantage of the latest improvements to the open-source versions.
When would I use Amazon MQ vs. managing ActiveMQ, or RabbitMQ, on Amazon EC2 myself?
With Amazon MQ, you do not have to worry about administration tasks such as broker provisioning, security patching, setup, configuration, broker version upgrades, or recovery. You may want to consider Amazon MQ when you want to offload operational overhead and associated costs. If you want greater control to customize features and configurations or to use custom plugins, you may want to consider installing and running your message broker on Amazon EC2 directly.
In certain use cases, the inter-node data transfer for RabbitMQ can result in high costs on a self-managed cluster. Amazon MQ does not charge for inter-node data transfer for RabbitMQ brokers.
How can I get started with Amazon MQ?
Amazon MQ makes it easy to set up and operate message brokers in the cloud. With Amazon MQ, you can use the AWS Management Console, CLI, or API calls to launch a production-ready message broker in minutes. In most cases, you can simply update the endpoints of your Amazon MQ broker to connect to your existing applications and start sending messages.
Try a short tutorial, Create a Connected Message Broker, to get started today.
What AWS regions offer Amazon MQ?
Amazon MQ region availability is documented here.
Migrating to Amazon MQ
How do I migrate if I am using a different message broker instead of ActiveMQ or RabbitMQ?
Amazon MQ provides compatibility with the most common messaging APIs, such as Java Message Service (JMS) and .NET Message Service (NMS), and protocols, including AMQP, STOMP, MQTT, and WebSocket. This makes it easy to switch from any standards-based message broker to Amazon MQ without rewriting the messaging code in your applications. In most cases, you can simply update the endpoints of your Amazon MQ broker to connect to your existing applications, and start sending messages.
Apache ActiveMQ
What is Apache ActiveMQ?
Apache ActiveMQ is an open source, multi-protocol, Java-based message broker.
Which versions of ActiveMQ does Amazon MQ support?
Amazon MQ supports ActiveMQ Classic version 5.18 by default. Customers can choose older versions such as ActiveMQ 5.17, but Amazon MQ does not recommend them.
How will new versions of the ActiveMQ be supported on Amazon MQ?
Amazon MQ will continually add support for new ActiveMQ versions. The number of new versions supported will vary based on the frequency and content of releases by the open-source maintainers.
How do I specify the supported ActiveMQ version for my broker?
You can specify the ActiveMQ version (e.g. ActiveMQ 5.17.6) when creating a new broker via the AWS Management Console or the CreateBroker API. Amazon MQ will provide the latest version available by default on the AWS Management Console.
How can I upgrade my broker to the latest supported ActiveMQ version?
You can manually upgrade your broker at any time to the next supported major, minor, or patch version. When you turn on automatic minor version upgrades, Amazon MQ will upgrade your broker to the latest supported patch version during the next maintenance window. Amazon MQ will upgrade all brokers to the next supported minor version when the current minor version reaches end of support.
What will happen when a version of ActiveMQ on Amazon MQ reaches end of support?
Amazon MQ supports ActiveMQ versions up to the end of support date indicated in the ActiveMQ version support calendar. Amazon MQ will provide at least 90 days of notice before a version reaches end of support. Amazon MQ will upgrade all brokers to the next supported version when the current minor version reaches end of support.
Why can I not create a ActiveMQ broker on a particular version?
In some cases, Amazon MQ may end support for specific versions without prior notice, such as when a version does not meet our high quality, performance, or security bar. In the unlikely event that such cases occur, Amazon MQ will prevent the creation of new brokers with these versions and upgrade existing brokers to the next supported version that meets our bar. Specific circumstances may dictate different timelines depending on the issue being addressed.
What type of storage is available with Amazon MQ for ActiveMQ?
Amazon MQ for ActiveMQ supports two types of broker storage – durability optimized using Amazon Elastic File System (Amazon EFS) and throughput optimized using Amazon Elastic Block Store (EBS). To take advantage of high durability and replication across multiple Availability Zones, use durability optimized brokers backed by Amazon EFS. To take advantage of high throughput for your high-volume applications, use throughput optimized brokers backed by EBS.
What is an Amazon MQ network of brokers?
Amazon MQ for ActiveMQ uses the “network of brokers” feature that is part of Apache ActiveMQ. A network of brokers consists of multiple brokers connected in a mesh. Brokers in the network share information about the clients and destinations each broker hosts. The brokers use this information to route messages through the network. With Amazon MQ, the brokers in the network can either be active-standby brokers (each active broker in the network has a standby node, with shared storage, that will take over if the active node fails), or single-instance brokers (if the node fails, it will be unavailable until it is restarted). Each broker in the network maintains its own unique message store which is replicated across multiple availability zones (AZs) within a region for active/standby brokers, using durability-optimized storage. The nodes in the network forward messages to each other, so messages are stored by a single broker at any given time. You should use network of brokers if you require high availability with fast reconnection in the case of broker failure, or if you need the ability to scale horizontally.
RabbitMQ
What is RabbitMQ?
RabbitMQ is an open source, multi-protocol message broker supporting a wide variety of messaging use cases.
Which versions of RabbitMQ does Amazon MQ support?
Amazon MQ supports RabbitMQ version 3.13 by default. Customers can choose older versions such as RabbitMQ 3.8, 3.9, 3.10, 3.11 or 3.12, but Amazon MQ does not recommend them.
How will new versions of the RabbitMQ be supported on Amazon MQ?
Amazon MQ will continually add support for new RabbitMQ versions. The number of new versions supported will vary based on the frequency and content of releases by the open-source maintainers.
How do I specify the supported RabbitMQ version for my broker?
You can specify the RabbitMQ version (e.g. RabbitMQ 3.13) when creating a new broker via the AWS Management Console or the CreateBroker API. Amazon MQ will provide the latest version available by default on the AWS Management Console.
How can I upgrade my broker to the latest supported RabbitMQ version?
You can manually upgrade your broker at any time to the next supported major or minor version. When you turn on automatic minor version upgrades, Amazon MQ will upgrade your broker to the latest supported patch version during the next maintenance window. Amazon MQ will upgrade all brokers to the next supported minor version when the current minor version reaches end of support. From RabbitMQ version 3.13 onwards, Amazon MQ will manage the patch version for you and ensure all brokers are on the latest patch version of the minor version.
What will happen when a version of RabbitMQ on Amazon MQ reaches end of support?
Amazon MQ supports RabbitMQ versions up to the end of support date indicated in the RabbitMQ version support calendar. Amazon MQ will provide at least 90 days of notice before a version reaches end of support. Amazon MQ will upgrade all brokers on the version to the next supported version after it reaches end of support. All supported RabbitMQ versions today are backward compatible with each other.
Why can I not create a RabbitMQ broker on a particular version?
You can manually upgrade your broker at any time to the next supported major or minor version. When you turn on automatic minor version upgrades, Amazon MQ will upgrade your broker to the latest supported patch version during the next maintenance window. Amazon MQ will upgrade all brokers to the next supported minor version when the current minor version reaches end of support. From RabbitMQ version 3.13 onwards, Amazon MQ will manage the patch version for you and ensure all brokers are on the latest patch version of the minor version.
What plugins are available for RabbitMQ on Amazon MQ?
Amazon MQ for RabbitMQ includes the management, shovel, federation, and consistent hash exchange plugins on all brokers.
Integrations
How does Amazon MQ work with other AWS services?
Any application that runs on an AWS compute service, such as Amazon EC2, Amazon ECS, or AWS Lambda, can use Amazon MQ. Amazon MQ is also integrated with the following AWS services:
- Amazon CloudWatch - Monitor metrics and generate alarms
- Amazon CloudWatch Logs - Publish logs from your Amazon MQ brokers to Amazon CloudWatch Logs
- AWS CloudTrail - Log, continuously monitor, and retain Amazon MQ API calls
- AWS CloudFormation - Automate the process of creating, updating, and deleting message brokers
- AWS EventBridge Pipes – Use Amazon MQ message brokers as a source
- AWS Lambda - Use Amazon MQ message brokers as a source
- AWS Identity and Access Management (IAM) - Authentication and authorization of the service API
- AWS Key Management Service (KMS) - Create and control keys used to encrypt your data
Availability
How can I ensure high availability on Amazon MQ?
You can create a multi-AZ broker with a few clicks in the AWS Management Console or using the AWS SDKs. First, in the Amazon MQ console select an AWS region and broker engine type to create an Amazon MQ cluster in. You can choose from a three-node cluster deployment for RabbitMQ, an Active-Standby deployment or a mesh network of brokers for ActiveMQ.
When I create an Amazon MQ cluster, do the underlying resources (e.g. Amazon EC2 instances) show up in my EC2 console?
No, EC2 instances are not visible in your EC2 account as these are managed by the Amazon MQ service. Some networking resources (elastic network interfaces (ENIs), VPC endpoints) are visible in your Amazon EC2 account for you to connect to the broker.
What do I need to provision within an Amazon MQ broker?
You need to provision broker instances and broker storage with every broker you create. You may choose to select an existing VPC, subnet, security group or customer managed keys instead of the ones provided by the Amazon MQ service.
Configurations
Can I change the default broke configurations or upload a new configuration to Amazon MQ?
Yes, Amazon MQ allows you to create custom configurations and apply them to new and existing clusters. For more information on custom configurations, see the configuration documentation.
Encryption
How do I use my own custom keys to encrypt the data in Amazon MQ?
Amazon MQ supports the AWS Key Management Service (AWS KMS) to create and manage keys for at-rest encryption of your data in Amazon MQ. When you create a broker, you can select the KMS key used to encrypt your data from the following three options: a KMS key in the Amazon MQ service account, a KMS key in your account that Amazon MQ creates and manages, or a KMS key in your account that you create and manage. In addition to encryption at rest, all data transferred between Amazon MQ and client applications is securely transmitted using TLS/SSL.
Pricing
How am I charged for Amazon MQ?
With Amazon MQ, you pay only for what you use. You are charged for the broker instance usage, storage usage, and standard data transfer fees. You can easily get started with Amazon MQ using the free tier for one year. See Amazon MQ pricing for details.
Do I pay for inter-node data transfer on Amazon MQ for RabbitMQ?
No, all inter-node data transfer is included with the service at no additional charge.
Does Amazon MQ offer Reserved Instance pricing?
No, Amazon MQ does not offer reserved instance pricing.
Do I need to provision and pay for broker boot volumes?
No, each broker you provision includes boot volume storage managed by the Amazon MQ service.
Compliance
What compliance programs are in scope for Amazon MQ?
Amazon MQ is compliant or eligible for the following programs:
- HIPAA eligible
- PCI DSS compliant
- SOC 1,2,3 compliant
- ISO 9001, 27001, 27017, and 27018 certified
For a complete list of AWS services and compliance programs, please see AWS Services in Scope by Compliance Program.