閱讀104 返回首頁    go windows


隊列模型名詞解釋__產品名詞解釋_產品簡介_消息服務-阿裏雲

隊列是消息存儲的目的地,隊列可以分成普通隊列和延時隊列兩類。
消息包含數據和屬性,可以分成普通消息和延時消息,在一個隊列中能唯一標識一個消息的有 MessageId 和 ReceiptHandle 兩種。

Account

即用戶的阿裏雲帳號ID。

隊列所有者

開通 MNS 服務的 Account 通過 CreateQueue 接口創建出一個消息隊列,這個 Account 就是該隊列的所有者,隊列所有者擁有此隊列的所有操作權限。隊列所有者對應的 Account ID 在阿裏雲官網可以查看。

生產者、消費者

生產者,向 MNS 的消息隊列發送消息的角色。
消費者,從 MNS 的消息隊列獲取消息的角色。

普通隊列

如果發送消息時不指定消息延時參數,消息發送到普通隊列後可立即被消費。

延時隊列

如果發送消息時不指定消息延時參數,發送到延時隊列的消息需要經過一定的時間後才能被取到。用戶可以通過 CreateQueue 和 SetQueueAttribute 指定隊列的延時時長。

Endpoint

MNS的訪問域名地址, 格式如下:https://$AccountId.mns.$Region.aliyuncs.com/

  • mns.<Region>.aliyuncs.com: Region 是 MNS服務部署的區域,用戶可以根據應用需要選擇不同的地域.
  • AccountId: 隊列所有者的帳號 ID,調用API請求時需替換成實際的帳號ID.

普通消息、延時消息

  • 普通消息是指被發送到隊列馬上可以被取到的消息;
  • 延時消息是指消息發送到隊列後需要經過一定的時間後才能被取到的消息,延時時長由 DelaySeconds 屬性定(請參考 SendMessage 相關屬性定)。

消息ID(MessageID)

MessageId 用來標識在隊列中的一個消息,在一個隊列中每個消息都有唯一的 MessageId, 但在不同隊列之間並不唯一。當消息發送到 MNS 的隊列, MNS 會生成一個 MessageId,此 ID 一旦產生就不會改變, 並在請求響應中返回,用戶主要可以使用此 MessageId 來做數據校對,但是刪除消息必須使用 ReceiptHandle。

臨時句柄(ReceiptHandle)

ReceiptHandle 是由 MNS 根據當時獲取消息的行為產生的臨時消息標識,這一點不同於 MessageId。 當要刪除已消費的消息或者改變其VisiblityTimeout 屬性值,需要用 ReceiptHandle 指定已消費過的消息。 ReceiptHandle 隻能被使用一次, 如果 ReceiptHandle 標識的消息狀態改變其就會失效,消費者隻有通過獲取消息後重新獲取 ReceiptHandle 才能進行上述操作。

消息狀態(Message Status)

消息生命周期

普通消息被發送到普通消息隊列時, 初始狀態是 Active,當其被取走後在 VisibilityTimeout 的時間內狀態為 Inactive,若超過 VisibilityTimeout 時間後消息還未被刪除,消息會重新變成 Active 狀態;如果在VisibilityTimeout 時間內被刪除,消息狀態為 Deleted。

普通消息發送到延時隊列時,消息初始狀態 Delayed,經過延時隊列的 DelaySeconds 屬性值設定的時間後,消息狀態變成 Active。

延時消息發送到隊列(普通隊列或者延時隊列),消息的初始狀態為 Delayed,經過消息的 DelaySeconds 屬性指定的時間後消息狀態變成 Active。

消息的最長存活時間由創建隊列時指定的 MessageRetentionPeriod 屬性值決定, 超過此時間後消息狀態會變成 Expired,將被垃圾回收器回收。

消費者隻能取到處於 Active 狀態的消息。

消息生命周期

最後更新:2016-11-23 17:18:23

  上一篇:go 產品概述__產品簡介_消息服務-阿裏雲
  下一篇:go 主題訂閱名詞解釋__產品名詞解釋_產品簡介_消息服務-阿裏雲