阿里云消息服务MNS(Message Service)是一种高效、可靠、安全、便捷和可弹性扩展的分布式消息服务。消息服务MNS能够帮助开发者在应用的分布式组件之间自由地传递数据、通知消息,从而构建松耦合系统。消息服务MNS支持队列模型和主题模型。

队列模型

队列模型提供高可靠、高并发的一对一消费模型,即队列中的每一条消息都只能够被某一个消费者消费。

队列就像一家旋转寿司店。寿司店中有多个寿司师傅(生产者)在制作精美的寿司,每一份寿司都是独特的,顾客(消费者)可以从传送带上拿取中意的寿司进行食用(消费)。

队列模型消息流

图 1所示,应用系统A(生产者)向队列发送消息,应用系统B(消费者)从队列取出消息。

图 1. 队列模型消息流
queuemodel

队列模型特性

  • 多种队列模式

    支持普通队列、延迟队列。您可以个性化地配置队列属性以满足不同应用场景。

  • 海量并发访问

    支持多个生产者和消费者并发访问同一队列,并能确保某条消息在取出之后的特定时间内,无法被其他消费者获得。您可以根据业务需求自由伸缩并发访问数。

  • 消息投递保障

    在消息有效期内,确保消息至少能被成功消费一次。消息服务MNS接入阿里云账号体系,用户间资源隔离,确保队列中的消息不会被非法获取。

  • 分布式事务消息

    提供完善的分布式环境下事务消息解决方案。

  • 日志管理

    支持查看每条消息的完整生命周期事件,包括发送、接收和删除,方便问题排查。更多信息,请参见日志管理概述

  • 云监控

    支持查看队列情况,并且可以自定义报警项,当队列情况不符合期望时,您能够及时知晓。更多信息,请参见云监控

主题模型

主题模型提供一对多的发布订阅模型,支持消息通知。

主题就像一份报纸,多个读者到邮局订阅了这份报纸。当报纸推出最新一期时,读者(包括邮局的合作伙伴)可以选择以下方式来获取:

  • 让邮局投递员将报纸都投递(推送)到家里(特定的地址)。
  • 去就近的报刊亭(订阅点)自行获取报纸(报纸会先被邮局投递员集中送到各个报刊亭)。

主题模型消息流

图 2所示:

  • 主题上有多个订阅,每个订阅对应不同的队列。
  • 一条消息发布到主题后,会被分别推送到不同的订阅指定的队列。
  • 订阅支持消息过滤,您可在订阅中指定过滤标签。
    • 未指定过滤标签的订阅:无论消息有没有指定消息标签,都可以推送到指定的队列。
    • 已指定过滤标签的订阅:只有消息指定了匹配的消息标签,才会推送到指定的队列。
图 2. 主题模型消息流
topicmodel

主题模型特性

  • 通知消息
    • 消息服务MNS服务端主动将消息推送到您指定的队列,消除用户端不必要的轮询和资源消耗。您可以将资源集中在处理自身业务的逻辑中,避免对其他消息服务产品客户端的依赖,避免因为过多代码引入而影响自身服务的稳定性。更多信息,请参见:
    • 对于因为网络或者其他原因不方便提供回调地址的情况,消息服务MNS依然支持将消息推送到队列中,您仍然可以直接到队列中获取消息。原先使用队列模型的消费者,可以无缝消费主题中的消息。更多信息,请参见: