本文介绍轻量消息队列(原 MNS)中订阅(Subscription)的定义、模型关系及内部属性。
定义和模型关系
在轻量消息队列(原 MNS)中,订阅是消费者注册特定主题以接收消息的规则。通过不同的订阅规则将特定主题(Topic)与一个或多个订阅(Subscription)关联,可以自定义消息的推送规则和接收目标。
在轻量消息队列(原 MNS)的消息模型中,订阅的位置和流程如下图所示。
功能说明
多种订阅类型:一个主题可以有多个订阅,分别对应不同类型的接收目标。
消息可被重复订阅:每个订阅都可以订阅主题中的所有消息。
订阅属性
订阅名称
定义:订阅的名称,用于标识订阅,同一个订阅者订阅相同的主题时,订阅名称不能重复。
取值: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类型的消息格式。