Amazon MQ 专业2017年〜
支持 Apache ActiveMQ 和 RabbitMQ 的全托管消息代理服务
它能做什么
Amazon MQ 是一项在云上轻松运营 Apache ActiveMQ 和 RabbitMQ 的全托管消息代理服务。无需修改代码即可将现有消息应用迁移到云端。支持 JMS、AMQP、STOMP、MQTT、OpenWire 等行业标准协议,便于从本地消息代理迁移。
使用场景
用于本地 ActiveMQ 或 RabbitMQ 的云迁移、遗留系统与云原生应用间的异步消息传递、微服务间的松耦合通信、订单处理系统的队列,以及 IoT 设备的 MQTT 消息接收。
日常类比
可以将其比作邮局。发件人 (生产者) 将信件 (消息) 交给邮局 (代理),在收件人 (消费者) 方便的时候送达。邮局建筑的管理和邮递员的安排全由 AWS 负责,用户只需关注信件内容。
什么是 Amazon MQ
Amazon MQ 是支持行业标准消息协议的托管消息代理。AWS 也有 SQS 和 SNS 等云原生消息服务,但它们使用专有 API。当现有本地应用依赖 ActiveMQ 或 RabbitMQ 的 API 和协议时,使用 Amazon MQ 可无需修改应用代码即可迁移到云端。
ActiveMQ 与 RabbitMQ 的选择
Amazon MQ 可选择 ActiveMQ 或 RabbitMQ 作为代理引擎。ActiveMQ 与 JMS (Java Message Service) 兼容性高,适合与 Java 企业应用集成。RabbitMQ 作为 AMQP 协议的参考实现被广泛采用,具有灵活的路由功能和高吞吐量。 如需了解 ActiveMQ 与 RabbitMQ 选择的详细信息,可参考 相关书籍 (Amazon)。
高可用性与安全
Amazon MQ 支持多可用区配置,主代理故障时自动故障转移到备用代理。数据持久化到 EFS (ActiveMQ) 或 EBS (RabbitMQ),防止消息丢失。通信使用 TLS 加密,存储数据可使用 AWS KMS 加密。将代理部署在 VPC 内可实现网络级隔离。
注意事项
- 新开发需要云原生消息时,应优先考虑 SQS 或 SNS 而非 Amazon MQ
- 多可用区配置故障转移时会有数十秒停机,客户端需实现重连逻辑