全部產品
Search
文件中心

:Subscribe

更新時間:Jan 23, 2025

調用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:退避重試

    • EXPONENTIAL_DECAY_RETRY:指數衰減重試

    重試策略的具體描述,請參見NotifyStrategy

    預設值:BACKOFF_RETRY。

    NotifyContentFormat

    Boolean

    SIMPLIFIED

    用於定義向Endpoint推送的訊息格式。

    取值範圍:

    • XML

    • JSON

    • SIMPLIFIED

    訊息格式的具體描述,請參見NotifyContentFormat

    預設值: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:退避重試

    • EXPONENTIAL_DECAY_RETRY:指數衰減重試

    重試策略的具體描述,請參見NotifyStrategy

    預設值:BACKOFF_RETRY。

    NotifyContentFormat

    Boolean

    SIMPLIFIED

    用於定義向Endpoint推送的訊息格式。

    取值範圍:

    • XML

    • JSON

    • SIMPLIFIED

    訊息格式的具體描述,請參見NotifyContentFormat

    預設值: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

過濾標籤長度不符合要求,請按照建議調整。