调用Subscribe接口,为主题创建Subscription。
授权信息
默认仅限阿里云账号使用本接口,RAM用户只有在被授予了相关API操作权限后方可使用。本接口的授权信息如下表所示。更多信息,请参见授权策略和示例。
Name | Value |
API | Subscribe |
RAM授权操作 | mns:Subscribe |
资源 | acs:mns:$region:$accountid:/topics/$topicName/subscriptions/$subscriptionName |
使用说明
Subscription名称是一个不超过255个字符的字符串,必须以字母或者数字为首字符,剩余部分可以包含字母、数字和短划线(-)。
创建Subscription时,需要指定对应的Endpoint,否则不合法。
请求消息
请求消息由请求行、HTTP头和消息体三部分组成:
请求行
PUT /topics/$TopicName/subscriptions/$SubscriptionName HTTP/1.1
特有Request Header
无。
Request Body
Request Body为XML格式,XML中包含创建Subscription的属性。
参数名称
类型
是否必选
示例值
描述
Endpoint
String
是
http://example.com
目前四种Endpoint:
HttpEndpoint:必须以http://为前缀。
QueueEndpoint:格式为acs:mns:{REGION}:{AccountID}:queues/{QueueName}。
MailEndpoint:格式为mail:directmail:{MailAddress}。
SmsEndpoint:格式为sms:directsms:anonymous 或sms:directsms:{Phone}。
FilterTag
String
否
important
该订阅中消息过滤的标签(标签一致的消息才会被推送)。
取值范围:不超过16个字符的字符串。
默认不进行消息过滤。
NotifyStrategy
Boolean
否
BACKOFF_RETRY
向Endpoint推送消息出现错误时的重试策略。
默认值:BACKOFF_RETRY。
NotifyContentFormat
Boolean
否
SIMPLIFIED
用于定义向Endpoint推送的消息格式。
默认值:XML。
如果您使用Terraform管理alicloud_message_service_subscription,请按照下表说明对参数进行调用。
参数名称
类型
是否必选
示例值
描述
TopicName
String
是
testTopic
主题名称。
SubscriptionName
String
是
testSubscription
订阅名称。
PushType
String
是
queue
终端类型。
http:HTTP推送类型。
queue:队列推送类型。
mpush:移动推送类型。
alisms:阿里短信推送类型。
email:邮箱推送类型。
Endpoint
String
是
demoQueue
此次订阅中接收消息的终端地址。终端是队列则填写队列名。
MessageTag
String
否
important
该订阅中消息过滤的标签(标签一致的消息才会被推送)。
取值范围:不超过16个字符的字符串。
默认不进行消息过滤。
NotifyStrategy
Boolean
否
BACKOFF_RETRY
向Endpoint推送消息出现错误时的重试策略。
默认值:BACKOFF_RETRY。
NotifyContentFormat
Boolean
否
SIMPLIFIED
用于定义向Endpoint推送的消息格式。
默认值:XML。
返回消息
返回消息由返回状态行、HTTP头和消息体三部分组成:
HTTP Status Code
HTTP/1.1 201
同一个订阅者在同一个主题下的Subscription不能重名,当出现重名时,如果正在创建的Subscription已经存在的Subscription属性完全相同,返回204;否则返回409 (Conflict)。
特有Response Header
参数名称
类型
示例值
描述
Location
String
http://$AccountId.mns.cn-hangzhou.aliyuncs.com/topics/$TopicName/subscriptions/$SubscriptionName
返回创建成功的SubscriptionURL,格式如下:http://$AccountId.mns.{REGION}.aliyuncs.com/topics/$TopicName/subscriptions/$SubscriptionName。
其他Response Header,请参见公共参数。
Response Body
无。
示例
请求示例:
PUT /topics/$TopicName/subscriptions/$SubscriptionName HTTP/1.1
Host: $AccountId.mns.cn-hangzhou.aliyuncs.com
Date: Tue, 08 Dec 2015 06:06:46 GMT
Authorization:MNS 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXA*****
x-mns-version: 2015-06-06
<?xml version="1.0" encoding="utf-8"?>
<Subscription xmlns="http://mns.aliyuncs.com/doc/v1/">
<Endpoint>http://example.com</Endpoint>
<NotifyStrategy>BACKOFF_RETRY</NotifyStrategy>
<NotifyContentFormat>SIMPLIFIED</NotifyContentFormat>
<FilterTag>important</FilterTag>
</Subscription>
返回示例:
HTTP/1.1 201
x-mns-request-id:56667376B2B71C9C1600****
x-mns-version: 2015-06-06
Location: http://$AccountId.mns.cn-hangzhou.aliyuncs.com/topics/$TopicName/subscriptions/$SubscriptionName
错误码
错误码 | 错误信息 | HTTP状态码 | 描述内容 |
SubscriptionNameLengthError | Subscription name length is out of range, should be between 1 and 255. | 400 | 订阅名称不合法,请按照建议调整。 |
SubscriptionNameInvalid | The subscription you provided is invalid. SubscriptionName should start with alpha or digit, and contain only alpha, digit or -. | 400 | 订阅名称不合法,请按照建议调整。 |
SubscriptionAlreadyExist | The subscription you want to create already exists. | 409 | 同名订阅已经存在,且请求属性与原有订阅属性不同。 |
EndpointInvalid | The endpoint you provided is invalid. | 400 | Endpoint参数不合法,请参见Endpoint。 |
InvalidArgument | The length of filter tag should be between 1 and 16. | 400 | 过滤标签长度不符合要求,请按照建议调整。 |