消息服务

消息服务是阿里云商用的消息中间件服务,帮助应用开发者在应用组件之间自由地传递信息和发送通知

阿里云消息服务是一种高效、可靠、可扩展的分布式消息 队列和通知服务,该服务支持并发操作,以促进在应用和分离的系统之间传输消息。

阿里云消息队列服务是一种基于云的管理型服务,该服务可确保消息至少被使用一次并允许多个制作者和使用者同时对同一消息队列进行操作。阿里云消息服务根据“先进先出”原则运行,以确保消息按照发送的顺序被使用。

阿里云消息服务是一种按量付费服务,不需要任何前期投资,为您省去了获得并扩展消息传送平台的麻烦。

优点

安全
通过鉴权机制提供多级安全
确保消息存储在队列中并使其免于受到未经授权的访问
可自定义的队列属性配置
允许对队列属性进行个性化配置,以支持不同的应用场景
支持延迟自定义并按优先次序排列队列
兼容 RESTful API
您可以轻松构建消息队列,并将其与其他阿里云服务相集成,以通过访问 RESTful API 构建强大的分布式部署
并发读写
多个创建者和使用者可同时对同一消息队列进行操作

产品详情

  • 简单易用

    易于使用的服务,拥有 SendMessage、ReceiveMessage 和 DeleteMessage 等 API。


    通过阿里云消息服务,发挥标准 HTTP RESTful 界面的优势。


    一种免维护服务,无需依赖任何平台。


    可与 ECS、RDS 等其他阿里云服务兼容。

  • 延迟消息

    支持延迟消息。
    您可以使用 DelaySeconds 参数确定延迟持续时间,此参数可在使用 SendMessage 时指定。

  • 延迟队列

    您可以通过使用 CreateQueue 和 SetQueueAttribute 指定队列服务的延迟持续时间。

  • 快速备份,高可靠性

    可跨多个可用性区域快速备份数据,确保可靠性达 99.9999999%。


    服务可用性高达 99.99%。


    确保在有效期限内成功发送消息。

  • 多元化的队列属性

    提供各种可供您个性化的消息队列服务模式,包括普通队列、时延队列和优先队列。

常见问题

1. 阿里云消息服务有哪些主要功能?

消息服务可用于以下应用场景:

• 您可以将阿里云消息服务与阿里云弹性计算服务、阿里云对象存储服务等其他产品相集成,以构建可靠、容错和灵活的应用。
• 您可以将消息队列服务用作工作队列,以便队列中的每条消息都能代表一项任务并完成一个流程。这样,您就可以对流程进行分解,并构建更具弹性的应用。不过,一个或多个阿里云 ECS 可以读取并执行队列中的多项任务。
• 您还可以存储服务流程中关于重大事件的通知,在此流程中,每个事件在队列中都有一则对应的消息。需要捕获事件的应用可以读取并处理对应的消息。

2. 如何从不同地域访问阿里云消息服务?

阿里云消息服务提供各种端点,以便在下述各种地域中访问该服务:

地域公共网络地址专有网络地址
杭州mns.cn-hangzhou.aliyuncs.commns.cn-hangzhou-internal.aliyuncs.com
青岛mns.cn-qingdao.aliyuncs.commns.cn-qingdao-internal.aliyuncs.com
北京mns.cn-beijing.aliyuncs.commns.cn-beijing-internal.aliyuncs.com
新加坡mns.ap-southeast-1.aliyuncs.commns.ap-southeast-1-internal.aliyuncs.com
美国西部mns.us-west-1.aliyuncs.commns.us-west-1-internal.aliyuncs.com/
深圳mns.cn-shenzhen.aliyuncs.commns.cn-shenzhen-internal.aliyuncs.com
上海mns.cn-shanghai.aliyuncs.commns.cn-shanghai-internal.aliyuncs.com

3. 阿里云消息服务支持哪些种类的操作?

目前,阿里云消息服务支持以下操作:

与队列相关的操作

• CreateQueue:创建一个新队列。
• SetQueueAttributes:修改队列的属性。
• GetQueueAttributes:获得现有队列的属性。
• DeleteQueue:删除现有队列。
• ListQueue:列出一个帐号下的队列。

与消息相关的操作

• SendMessage:使创建者能够向指定队列发送消息。
• BatchSendMessage:使创建者能够向指定队列批量发送消息。
• ReceiveMessage:使使用者能够使用队列中的消息。
• BatchReceiveMessage:使使用者能够批量使用队列中的消息。
• DeleteMessage:删除使用过的消息。
• BatchDeleteMessage:批量删除使用过的消息。
• PeekMessage:使使用者能够查看消息。
• BatchPeekMessage:使使用者能够批量查看消息。
• ChangeMessageVisibility:更改已被使用的消息仍然处于不活动状态和可以再次使用的时间。

4. 与其他消息队列系统相比,阿里云消息服务有哪些优势?

与构建消息队列系统或使用商业或开源消息和通知服务以管理队列相比,阿里云消息服务具有以下优势:

• 您无需进行大规模投资。
• 您无需动用过多的硬件和管理资源,如果动用的硬件和管理资源过多,则将增加您的企业拥有成本。
• 在使用复制和冗余消息存储选项时,即使硬件发生故障,您的消息也将会很安全。
• 即使在实时部署中,当您创建消息后,您也可以通过阿里云管理控制台轻松作出更改。

5. 如何开始使用阿里云消息服务

• 创建一个阿里云帐户
• 在线订阅消息服务。
• 现在,您可以开始执行基本的消息操作,例如使用管理控制台创建和删除队列、接收和发送消息等。
• 您还可以参阅此 快速入门指南,了解关于如何通过管理控制台使用阿里云消息服务的分步指导。
• 您还可以利用消息服务API开发包,将消息队列与您的应用相集成。

6. 如何在系统中标识消息?

使用唯一的 MessageId 来标识队列中的消息。当向消息服务队列发送消息时,将生成一个 MessageId,生成后不得更改。

7. 什么是长轮询?

长轮询是一种从队列中检索消息的方式。长轮询使阿里云消息服务能够等到队列中有可用消息后再发送响应,这样有助于减少空响应的数量。

8. 消息队列服务是否支持长轮询?

是,消息服务支持长轮询。

一旦消息可用,长轮询可立即以简单且经济的方式从消息服务队列中检索消息。

9. 消息服务是否支持消息先入先出 (FIFO)

支持,消息服务尽其最大努力来确保以 FIFO 方式使用消息。但是,分布式消息队列的某些功能可能并不总是允许以消息的发送顺序来使用消息。

10. 消息服务是否可以与其他阿里云服务一起运行?

消息服务可以与弹性计算服务、对象存储服务和对象表格服务等其他阿里云服务一起运行,以提高应用的可靠性和可扩展性。

11. 下面是消息服务与其他阿里云产品一起运行的常用情况

• 消息队列服务可以将消息承载到在 ECS 实例上运行的应用中,以便消息得到处理
• ECS 实例可以读取队列,处理任务,然后将结果作为消息发布到另一消息服务队列(可能由其他应用进行进一步处理)。
• ECS 允许动态地对应用进行扩展,以便开发人员可以根据消息量来灵活地构建计算实例以维护一致的性能。

12. 阿里云消息服务如何确保存储数据的可靠性?

消息服务将所有队列和消息都存储在由高可靠、高可用的阿里云数据中心组成的网络中。所有消息都以冗余模式存储在多个服务器中,因此,当发生服务器故障时,可以从冗余数据池中提取消息。

13. 消息服务如何保证当多个使用者访问同一队列时,不会丢失消息或重复使用消息?

每个消息服务队列都具有可配置的 ChangeMessageVisibility 属性(即从队列中取出的消息的不可见时间段属性)。当队列中的某条消息被取出后,在不可见时间段内,其他使用者将无法获取到该条消息。

• 如果您在不可见时间段内完成使用,则将使用临时句柄 (ReceiptHandle) 来删除消息。
• 如果您无法在不可见时间段内完成使用,您应该使用 (ChangeVisibilityTimeout) 发送请求来延长不可见时间段。否则,当不可见时间段过期后,消息可能会被其他使用者获得。

14. 使用阿里云消息服务,每条消息可以被接收多少次?

阿里云消息服务的系统设计可确保您队列中的所有消息至少被使用一次。但是,建议您加强应用的容错性,以便多次处理同一消息时不会造成错误或不一致。

15. 阿里云消息服务如何确保队列中消息的安全性?

阿里云消息服务提供安全可靠的身份鉴权机制来防止消息队列受到未经授权的访问。只有阿里云账户所有者才能访问其创建的队列。

16. 如何配置消息服务以支持更长的消息保留期限?

要设置消息保留期限,请使用 SetQueueAttributes 来设置 MessageRetentionPeriod 属性。此属性用于指定消息在消息服务队列中保留的时间。目前,消息保留期限的默认值为 4 天。您可以将 MessageRetentionPeriod 设置为 1 分钟至 15 天之间的一个值。

17. 消息在消息服务中可以保留多久?

阿里云消息服务的消息保留期限的默认值为 4 天。但是,消息保留期限是可配置的,您可以将其设置为 1 分钟到 15 天之间的任何值。一旦达到消息保留期限,您的消息将被自动删除。

18. 如何配置消息服务以支持更大的消息?

要配置最大消息大小,请使用 SetQueueAttributes 来设置 MaximumMessageSize 属性。此属性用于指定消息的字节大小。可以将其设置为 1KB 到 64KB 之间的任何值。如果消息长度超过了 64KB,建议将数据存储到 OSS 中,消息服务只存储数据访问地址。

19. 对于较长时间没有任何消息的队列,会怎样?

通常,阿里云消息服务不会删除不活跃的队列。但是,如果您的消息服务因为欠费或其他原因被停止了,那么您的所有队列都将被删除。

20. 不同区域中的同名队列是同一个队列吗?

不是,不同区域的同名队列是各自独立的。