本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon SQS、Amazon MQ 和 Amazon SNS 之间的区别
Amazon SQS、Amazon SNS
Amazon SQS 提供托管队列,以允许您集成和分离分布式软件系统和组件。Amazon SQS 提供一个通用 Web 服务 API,您可通过 Amazon SDK 支持的任何编程语言访问该 API。队列中的消息通常由单个订阅者处理。Amazon SQS 和 Amazon SNS 通常一起用于创建扇出消息应用程序
Amazon SNS 是一项发布订阅服务,提供从发布者(也称为创建者)到多个订阅者端点(也称为使用者)的消息传输。发布者通过将消息发送至主题与订阅用户进行异步交流,主题是一个逻辑接入点和通信渠道。订阅者可以订阅 Amazon SNS 主题并使用受支持的端点类型接收已发布的消息,例如,Amazon Data Firehose、Amazon SQS、Lambda、HTTP、电子邮件、移动推送通知和移动短信 (SMS)。Amazon SNS 充当消息路由器,向订阅者实时传送消息。如果订阅者在消息发布时不可用,则不会存储消息以备日后检索。
Amazon MQ 是一项托管消息代理服务,可兼容行业标准消息协议,例如 Advanced Message Queueing Protocol (AMQP) 和 Message Queuing Telemetry Transport (MQTT)。目前,Amazon MQ 支持 Apache ActiveMQ
下表概述了每种服务的资源类型:
资源类型 | Amazon SNS | Amazon SQS | Amazon MQ |
---|---|---|---|
同步 | 否 | 否 | 是 |
异步 | 是 | 是 | 是 |
队列 | 否 | 是 | 是 |
发布/订阅消息收发 | 是 | 否 | 是 |
消息代理 | 否 | 否 | 是 |
我们建议对新的应用程序使用 Amazon SQS 和 Amazon SNS,这样可以实现几乎不受限制的可扩展性和简单 API。我们建议 Amazon MQ 从依赖与 JMS 等 API 或高级消息队列协议 (AMQP)、MQTT 和简单文本消息协议 (STOMP) 等协议 (STOMP) 等协议兼容的现有消息代理中迁移应用程序。 OpenWire