本文介紹Simple Message Queue (formerly MNS)中訂閱(Subscription)的定義、模型關係及內部屬性。
定義和模型關係
在Simple Message Queue (formerly MNS)中,訂閱是消費者註冊特定主題以接收訊息的規則。通過不同的訂閱規則將特定主題(Topic)與一個或多個訂閱(Subscription)關聯,可以自訂訊息的推送規則和接收目標。
在Simple Message Queue (formerly MNS)的訊息模型中,訂閱的位置和流程如下圖所示。
功能說明
多種訂閱類型:一個主題可以有多個訂閱,分別對應不同類型的接收目標。
訊息可被重複訂閱:每個訂閱都可以訂閱主題中的所有訊息。
訂閱屬性
訂閱名稱
定義:訂閱的名稱,用於標識訂閱,同一個訂閱者訂閱相同的主題時,訂閱名稱不能重複。
取值:255個字元以內,必須以英文字母開頭,剩餘名稱可以是英文、數字、短劃線(-)。
訂閱類型
定義:訂閱訊息的終端類型。
取值:可以選擇隊列、HTTP服務、Short Message Service、Direct Mail、Alibaba Cloud Mobile Push。更多資訊,請參見訂閱類型。
不同訂閱類型的訊息推送速率(TPS)上限如下:
標準隊列訂閱:預設推送上限為 20,000 TPS。
HTTP(S) 服務訂閱:預設推送上限為 2,000 TPS。
當訊息推送速率超過上述限制時,服務端將進行限流處理,可能導致訊息推送出現延遲。如需更高的推送速率,您可以通過提交工單申請提升上限。
接收端地址(Endpoint)
定義:接收訊息的Endpoint。
取值:
當訂閱類型為HTTP時,填寫以
http://或者https://開頭的HTTP地址。當訂閱類型為隊列時,填寫隊列名稱。
當訂閱類型為阿里簡訊時,填寫手機號碼。
當訂閱類型為郵箱時,填寫郵箱地址。
當訂閱類型為移動終端時,填寫Appkey。
訊息過濾標籤
定義:用於對訊息進行過濾。關於訊息過濾的更多資訊,請參見訊息過濾。
取值:不超過16個字元,目前支援設定1個標籤。
重試策略(NotifyStrategy)
定義:訂閱的NotifyStrategy屬性,向接收端推送訊息出現錯誤時的重試策略。當推送訊息失敗時,Simple Message Queue (formerly MNS)將按照該屬性指定的重試策略進行重試。超過重試策略的次數後,Simple Message Queue (formerly 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類型的訊息格式。