資源描述:
《阿里云消息服務(wù)(MNS)API文檔》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、消息服務(wù)API使用手冊消息服務(wù)/API使用手冊API使用手冊簡介簡介消息通知服務(wù)簡介●MNS是一種高效、可靠、安全、便捷、可彈性擴(kuò)展的分布式消息通知服務(wù)?!衲軌驇椭鷳?yīng)用開發(fā)者在他們應(yīng)用的分布式組件上自由的傳遞數(shù)據(jù),構(gòu)建松耦合系統(tǒng)?!癖WC消息至少會被消費(fèi)一次,支持多個生產(chǎn)者和消費(fèi)者并發(fā)操作同一個消息隊列?!裣M(fèi)消息時盡量做到先進(jìn)先出,正是因為分布式消息隊列的一些特性并不能保證你能按照消息的發(fā)送順序消費(fèi)消息,如果你的業(yè)務(wù)必需先進(jìn)先出,建議在消息中加入序號信息以便消費(fèi)消息后進(jìn)行重新排序。基本概念A(yù)ccountAccoun
2、tAccount是阿里云的注冊用戶,在MNS中以阿里云注冊帳號的ID表示(形式為的16位數(shù)字串)。隊列所有者開通MNS服務(wù)的Account通過CreateQueue接口創(chuàng)建出一個消息隊列,這個Account就是這個消息隊列的所有者,消息隊列所有者擁有此消息隊列的所有操作權(quán)限。消息隊列所有者對應(yīng)的AccountID在阿里云官網(wǎng)的用戶中心可以查看。生產(chǎn)者、消費(fèi)者生產(chǎn)者,向MNS的消息隊列發(fā)送消息的角色。消費(fèi)者,從MNS的消息隊列獲取消息的角色。QueueQueue1消息服務(wù)/API使用手冊消息隊列是消息存儲的目的地,消
3、息隊列可以分成普通消息隊列和延時消息隊列兩類。如果發(fā)送消息時不指定消息延時參數(shù),被發(fā)送到普通消息隊列的消息立刻可以被消費(fèi),而發(fā)送到延時消息隊列需要經(jīng)過設(shè)定的延時時間后才能被消費(fèi)。QueueURL是標(biāo)識Queue的URL,格式如下:http://$AccountId.mns..aliyuncs.com/queues/$QueueName●mns..aliyuncs.com:MNS訪問域名,Region是MNS部署的區(qū)域,用戶可以根據(jù)應(yīng)用需要選擇不同的地域.●AccountId:表示消息
4、隊列所有者的帳號ID,實(shí)際調(diào)用MNS的API時請?zhí)鎿Q成實(shí)際的帳號ID.●QueueName:表示消息隊列的名稱,MNS使用者在實(shí)際調(diào)用API的過程中替換成實(shí)際消息隊列名稱,同一個AccountId在同Region中的消息隊列名不能重名.MessageMessage消息包含數(shù)據(jù)和屬性,消息可以分成普通消息和延時消息,在一個消息隊列中能唯一標(biāo)識一個消息的有MessageId和ReceiptHandle兩種。普通消息、延時消息消息主要分成普通消息和延時消息,普通消息是指被發(fā)送到消息隊列馬上可以被取到的消息;延時消息是指消
5、息發(fā)送到隊列后需要經(jīng)過一定的時間后才能被取到的消息,延時時長由DelaySeconds屬性定(請參考SendMessage相關(guān)屬性定)。普通消息被發(fā)送到延時消息隊列也具有延時特性(請參考Queue相關(guān)章節(jié))。MessageIdMessageId主要用來標(biāo)識在消息隊列中的一個消息,在一個消息隊列中每個消息都有唯一的MessageId,但在不同的消息隊列之中并不唯一。當(dāng)消息發(fā)送到MNS消息隊列,MNS會生成一個MessageId,此ID一旦產(chǎn)生就不會改變,并在請求響應(yīng)中返回,用戶主要可以使用此MessageId來做數(shù)據(jù)
6、校對,但是刪除消息必須使用ReceiptHandle。ReceiptHandleReceiptHandle是由MNS根據(jù)當(dāng)時獲取消息的行為產(chǎn)生的臨時性消息標(biāo)識,這一點(diǎn)不同于MessageId。當(dāng)要刪除已消費(fèi)的消息或者改變其VisiblityTimeout屬性值,需要用ReceiptHandle指定已消費(fèi)過的消息。ReceiptHandle只能被使用一次,如果ReceiptHandle標(biāo)識的消息狀態(tài)改變其就會失效,消費(fèi)者只有通過獲取消息后重新獲取ReceiptHandle才能進(jìn)行上述操作。MessageStatus2
7、消息服務(wù)/API使用手冊普通消息被發(fā)送到普通消息隊列時,初始狀態(tài)是Active,當(dāng)其被取走后在VisibilityTimeout的時間內(nèi)狀態(tài)為Inactive,若超過VisibilityTimeout時間后消息還未被刪除,消息會重新變成Active狀態(tài);如果在VisibilityTimeout時間內(nèi)被刪除,消息狀態(tài)為Deleted。普通消息發(fā)送到延時消息隊列時,消息初始狀態(tài)Delayed,經(jīng)過延時消息隊列的DelaySeconds屬性值設(shè)定的時間后,消息狀態(tài)變成Active。延時消息發(fā)送到消息隊列(普通消息隊列或者
8、延時消息隊列),消息的初始狀態(tài)為Delayed,經(jīng)過消息的DelaySeconds屬性指定的時間后消息狀態(tài)變成Active。消息的最長存活時間由創(chuàng)建消息隊列時指定的MessageRetentionPeriod屬性值決定,超過此時間后消息狀態(tài)會變成Expired,將被垃圾回收器回收。消費(fèi)者只能取到處于Active狀態(tài)的消息。調(diào)用方式請求結(jié)構(gòu)請求結(jié)構(gòu)服務(wù)地址MN