調用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 | 過濾標簽長度不符合要求,請按照建議調整。 |