全部产品
Search
文档中心

轻量消息队列(原 MNS):订阅(Subscription)

更新时间:Oct 17, 2024

本文介绍轻量消息队列(原 MNS)中订阅(Subscription)的定义、模型关系及内部属性。

定义和模型关系

轻量消息队列(原 MNS)中,订阅是消费者注册特定主题以接收消息的规则。通过不同的订阅规则将特定主题(Topic)与一个或多个订阅(Subscription)关联,可以自定义消息的推送规则和接收目标。

轻量消息队列(原 MNS)的消息模型中,订阅的位置和流程如下图所示。

image

功能说明

  • 多种订阅类型:一个主题可以有多个订阅,分别对应不同类型的接收目标。

  • 消息可被重复订阅:每个订阅都可以订阅主题中的所有消息。

订阅属性

订阅名称

  • 定义:订阅的名称,用于标识订阅,同一个订阅者订阅相同的主题时,订阅名称不能重复。

  • 取值:255个字符以内,必须以英文字母开头,剩余名称可以是英文、数字、短划线(-)。

订阅类型

  • 定义:订阅消息的终端类型。

  • 取值:可以选择队列、HTTP服务、短信服务邮件推送、移动推送。更多信息,请参见订阅类型

接收端地址(Endpoint)

  • 定义:接收消息的Endpoint。

  • 取值:

    • 订阅类型为HTTP时,填写以http://或者https://开头的HTTP地址。

    • 订阅类型为队列时,填写队列名称。

    • 订阅类型为阿里短信时,填写手机号码。

    • 订阅类型为邮箱时,填写邮箱地址。

    • 订阅类型为移动终端时,填写Appkey。

消息过滤标签

  • 定义:用于对消息进行过滤。关于消息过滤的更多信息,请参见消息过滤

  • 取值:不超过16个字符,目前支持设置1个标签。

重试策略(NotifyStrategy)

  • 定义:订阅的NotifyStrategy属性,向接收端推送消息出现错误时的重试策略。当推送消息失败时,轻量消息队列(原 MNS)将按照该属性指定的重试策略进行重试。超过重试策略的次数后,轻量消息队列(原 MNS)将丢弃这条消息,继续推送下一条消息。

  • 取值:

    • 退避重试(BACKOFF_RETRY):重试3次,每次重试的间隔时间是10秒到20秒之间的随机值。

    • 指数衰减重试(EXPONENTIAL_DECAY_RETRY):重试176次,每次重试的间隔时间指数递增至512秒,总计重试时间为1天。每次重试的具体间隔为:1,2,4,8,16,32,64,128,256,512,512...512 (共167个512)。

消息格式(NotifyContentFormat)

  • 定义:订阅的NotifyContentFormat属性,设置推送给用户的消息格式。

  • 取值:

    • SIMPLIFIED:消息体即用户发布的消息,不包含任何属性信息。消息体示例:

      {1:"a", 2:"b"}
    • JSON:消息体为JSON格式,包含消息正文和消息属性。消息体示例:

      {
          "TopicOwner":"TopicOwner",
          "TopicName":"TopicName",
          "Subscriber":"Subscriber",
          "SubscriptionName":"SubscriptionName",
          "MessageId":"6CC4D900CA59A2CD-1-15180534A8F-20000****",
          "Message":"xxxxx",
          "MessageMD5":"F1E92841751D795AB325861034B5****",
          "MessageTag":"important",
          "PublishTime":"1449556920975"
      }
    • XML:消息体为XML格式,包含消息正文和消息属性。消息体示例:

      <?xml version="1.0" encoding="utf-8"?>
          <Notification xlmns="http://mns.aliyuncs.com/doc/v1/">
              <TopicOwner>TopicOwner</TopicOwner>
              <TopicName>TopicName</TopicName>
              <Subscriber>Subscriber</Subscriber>
              <SubscriptionName>SubscriptionName</SubscriptionName>
              <MessageId>6CC4D900CA59A2CD-1-15180534A8F-20000****</MessageId>
              <Message>{1:"a", 2:"b"}</Message>
              <MessageMD5>F1E92841751D795AB325861034B5****</MessageMD5>
              <MessageTag>important</MessageTag>
              <PublishTime>1449556920975</MessagePublishTime>
          </Notification>
    说明

    当订阅类型为阿里短信和邮箱时,仅支持SIMPLIFIED类型的消息格式。