調用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:Alibaba Cloud Mobile Push類型。
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已經存在且屬性完全相同,返回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 | 過濾標籤長度不符合要求,請按照建議調整。 |