问:什么是 Amazon MQ?
Amazon MQ 是 Apache ActiveMQ 和 RabbitMQ 的托管消息代理服务,它使您可以轻松在云中设置和操作消息代理。您可以直接访问 ActiveMQ 和 RabbitMQ 控制台和使用行业标准的 API 和协议进行消息收发,包括 JMS、NMS、AMQP 1.0 和 0.9.1、STOMP、MQTT 和 WebSocket。您可以轻松地从使用这些标准的任何消息代理迁移到 Amazon MQ,因为您不必重写应用程序中的任何消息代码。
问:哪些人应该使用 Amazon MQ?
Amazon MQ 适合企业 IT 专业人员、开发人员和架构师,他们自己管理消息代理(无论是本地还是云中),并希望在不重写应用程序中的消息代码的情况下迁移到完全托管的云服务。
问:Amazon MQ 可代我管理哪些内容?
Amazon MQ 负责管理设置消息代理所涉及的工作,从预置您请求的基础设施容量(包括代理实例和存储)到安装代理软件。一旦您的代理启动并运行,Amazon 将管理持续的软件升级、安全更新以及故障检测和恢复。Amazon MQ 以冗余方式将消息存储在多可用区 (AZ) 之间,以保证消息的持久性。借助活动/备用代理,Amazon MQ 会在出现故障时自动故障转移到备用实例,以便您可以继续发送和接收消息。
问:我需要分别何时使用 Amazon MQ 与在 Amazon EC2 上自行管理 ActiveMQ 或是 RabbitMQ?
选择取决于您想要多密切地管理消息代理和底层基础设施。Amazon MQ 提供托管消息代理服务,该服务负责操作消息代理,包括设置、监控、维护和预置底层基础设施以实现高可用性和持久性。当您想要减少运营开销和相关成本时,您可能需要考虑使用 Amazon MQ。如果您希望更好地控制功能和配置的定制或使用自定义插件,则可能需要考虑直接在 Amazon EC2 上安装和运行您的消息代理。
问:如果我使用另一个消息代理而不是 ActiveMQ 或 RabbitMQ,我该如何迁移?
Amazon MQ 可与最常见的消息传递 API(例如 Java Message Service (JMS) 和 .NET Message Service (NMS))以及包括 AMQP、STOMP、MQTT 和 WebSocket 在内的协议兼容。这使您可以轻松地从任何基于标准的消息代理切换到 Amazon MQ,而无需重写应用程序中的消息代码。在大多数情况下,您只需更新 Amazon MQ 代理的终端节点即可连接到现有应用程序,然后开始发送消息。
问:Amazon MQ 如何与其他亚马逊云科技结合使用?
在亚马逊云科技计算服务(例如 Amazon EC2、Amazon ECS 或 Amazon Lambda)上运行的任何应用程序都可以使用 Amazon MQ。Amazon MQ 还与以下亚马逊云科技集成:
- Amazon CloudWatch - 监控指标和生成警报
- Amazon CloudWatch Logs - 将日志从您的 Amazon MQ 代理发布到 Amazon CloudWatch Logs
- Amazon CloudTrail - 记录、持续监控和保留 Amazon MQ API 调用
- Amazon CloudFormation - 自动执行创建、更新和删除消息代理的过程
- Amazon Identity and Access Management (IAM) - 服务 API 的身份验证和授权
- Amazon Key Management Service (KMS) - 创建和控制用于加密数据的密钥
问:如何开始使用 Amazon MQ?
借助 Amazon MQ,您可以轻松在云中设置和操作消息代理。借助 Amazon MQ,您可以使用亚马逊云科技管理控制台、CLI 或 API 调用在几分钟内启动生产就绪型消息代理。在大多数情况下,您只需更新 Amazon MQ 代理的终端节点即可连接到现有应用程序,然后开始发送消息。
问:使用 Amazon MQ 时如何收费?
使用 Amazon MQ,您只需按实际用量付费。您需要为代理实例和存储使用量付费,并支付标准数据传输费用。使用我们的免费套餐,您可以轻松开始使用 Amazon MQ 一年。有关详细信息,请参阅 Amazon MQ 定价。
问:我应该分别在何时使用 Amazon MQ 与Amazon SQS 和 SNS?
Amazon MQ、Amazon SQS 和 Amazon SNS 是消息收发服务,适合从初创公司到企业的任何人。如果您在现有应用程序中使用消息收发,并希望快速轻松地将消息迁移到云中,我们建议您考虑使用 Amazon MQ。它支持行业标准的 API 和协议,因此您可以从任何基于标准的消息代理切换到 Amazon MQ,而无需重写应用程序中的消息代码。如果您要在云中构建全新的应用程序,我们建议您考虑使用 Amazon SQS 和 Amazon SNS。Amazon SQS 和 SNS 是轻量级、完全托管的消息队列和主题服务,几乎可以无限扩展,并提供简单易用的 API。您可以使用 Amazon SQS 和 SNS 分离和扩展微服务、分布式系统和无服务器应用程序,并提高可靠性。
问:我应该分别在何时使用 Amazon MQ 与Amazon IoT 消息代理?
当您想要通过 ActiveMQ 或任何商业消息代理等开源消息收发应用程序减少运营开销和相关成本时,您可以使用 Amazon MQ。从商业代理或开源代理(如 ActiveMQ)迁移时,您可以使用 Amazon MQ 来降低代理维护、许可成本并提高代理的稳定性。Amazon MQ 还适用于应用程序集成使用案例,在此类使用案例中,您使用微服务开发新的基于云的应用程序,这些微服务可与复杂的消息收发模式进行通信,并需要低延迟、高可用性和消息持久性。Amazon MQ 支持行业标准 API(如 JMS 和 NMS)和消息收发协议,包括 AMQP、STOMP、MQTT 和 WebSocket。
当您的使用案例涉及物联网设备的遥测、设备管理、设备安全和物联网分析时,您可以使用 Amazon IoT 消息代理。Amazon IoT 消息代理适用于连接大型设备队列并收集遥测数据以将其发送到本机亚马逊云科技的物联网行业客户。Amazon IoT 消息代理支持行业标准轻量级协议,例如 MQTT、HTTP 和通过 WebSocket 的 MQTT。
问:如何使用我自己的自定义密钥来加密 Amazon MQ 中的数据?
Amazon MQ 支持 Amazon Key Management Service (KMS) 创建和管理密钥,以便在 Amazon MQ 中对您的数据进行静态加密。创建代理时,您可以从以下三个选项中选择用于为 ActiveMQ 的Amazon MQ 加密数据的 KMS 密钥:Amazon MQ 服务账户中的 KMS 密钥、Amazon MQ 创建和管理的账户中的 KMS 密钥,或者您在账户中创建和管理的 KMS 密钥。对于 RabbitMQ 上的 Amazon MQ,将使用 Amazon MQ 服务账户中的 KMS 密钥。除静态加密外,Amazon MQ 和客户端应用程序之间传输的所有数据都使用 TLS/SSL 安全地传输。
问:我如何监控代理实例、队列和主题?
Amazon MQ 和 Amazon CloudWatch 进行了集成,以便您可以查看和分析您的代理实例以及队列和主题的指标。您可以通过 Amazon MQ 控制台、CloudWatch 控制台、命令行或以编程方式查看和分析指标。每分钟都会自动收集指标并将指标推送到 CloudWatch 中。
问:Amazon MQ 是否提供服务等级协议?
是。亚马逊云科技将作出在商业上合理的努力,保证在任何月度计费周期内,活动/备用 ActiveMQ 代理和 RabbitMQ 集群的月度正常运行时间百分比至少为 99.9%(以下简称“服务承诺”)。如果 Amazon MQ 未达到每月正常运行时间百分比承诺,您将有资格获得服务积分。有关详细信息,请查看针对宁夏或北京区域的 Amazon MQ 服务等级协议。
问:适用于 ActiveMQ 的 Amazon MQ 可以使用哪种类型的存储?
适用于 ActiveMQ 的 Amazon MQ 支持两种类型的代理存储 – 使用 Amazon Elastic File System (Amazon EFS) 的持久性优化型以及使用 Amazon Elastic Block Store (EBS) 的吞吐量优化型。要利用高可用性和跨多可用区复制的优势,请使用 Amazon EFS 支持的持久性优化代理。要利用大容量应用程序的高吞吐量,请使用由 EBS 支持的吞吐量优化代理。吞吐量优化的消息代理可减少使用 Amazon MQ 所需的代理数量和运维大容量应用程序的成本。
问:适用于 RabbitMQ 的 Amazon MQ 有哪些插件?
适用于 RabbitMQ 的 Amazon MQ 包括所有代理上的管理、清除、联合和一致性哈希交换插件。
问:什么是 Amazon MQ 代理网络?
适用于 ActiveMQ 的 Amazon MQ 使用作为 Apache ActiveMQ 一部分的“代理网络”功能。代理网络由多个连接在一起的代理组成。网络中的代理共享有关每个代理托管的客户端和目标的信息。代理使用此信息通过网络路由消息。使用 Amazon MQ,网络中的代理可以是活动-备用代理(网络中的每个活动代理都有一个备用节点,具有共享存储,在主动节点出现故障时将该备用节点将接管),也可以是单实例代理(如果节点出现故障,则在重新启动之前不可用)。网络中的每个代理都维护着自己独特的消息存储,该消息存储可以在一个区域内的多可用区间复制。网络中的节点彼此转发消息,因此消息在任何给定时间都由一个代理进行存储。
如果您在代理故障时需要高可用性和快速重新连接,或者如果您需要水平扩展的能力,则应使用代理网络。