aliyun-mns - 阿里云 消息服務 非官方 SDK for node.js
來自: https://github.com/wzbg/aliyun-mns/blob/master/README.md
aliyun-mns
阿里云 消息服務 非官方 SDK for node.js
另一個非官方 node.js SDK 請移步至 https://github.com/InCar/ali-mns
官方文檔
使用方法請參照技術支持
請發郵件至:yecheng@amandapp.com
初始化
const MNS = require('aliyun-mns')
const mns = new MNS({
accessKeyId: '[在阿里云申請的 accessKeyId]',
secretAccessKey: '[在阿里云申請的 secretAccessKey]',
endpoint: 'http://[賬號ID].mns.[區域](-internal)(-vpc).aliyuncs.com',
apiVersion: '2015-06-06' // 調用MNS接口的版本號,當前版本為2015-06-06
})
安裝
Node.js 安裝
npm install aliyun-mns
使用方法及代碼示例
隊列接口
在 samples/queue 目錄下的代碼示例,使用方法:
- 將 sample/mns.js 中需要的參數修改
- 打開需要執行的某個實例文件,如 create.js,將其中的參數改成你自己的 queue 實例參數
執行示例文件即可, 如:
cd samples/queue node --harmony_destructuring create
主題接口
在 samples/topic 目錄下的代碼示例,使用方法:
- 將 sample/mns.js 中需要的參數修改
- 打開需要執行的某個實例文件,如 create.js,將其中的參數改成你自己的 topic 實例參數
執行示例文件即可, 如:
cd samples/topic node --harmony_destructuring create
API
隊列接口
constructor (mns, name, options)
mns
- [Required] - 使用自己參數初始化的 MNS 對象name
- [Required] - 隊列名稱options
- [Optional] - 隊列屬性DelaySeconds
- 發送到該 Queue 的所有消息默認將以DelaySeconds參數指定的秒數延后可被消費,單位為秒。0-604800秒(7天)范圍內某個整數值,默認值為0
<li><code>MaximumMessageSize</code> - 發送到該Queue的消息體的最大長度,單位為byte。1024(1KB)-65536(64KB)范圍內的某個整數值,默認值為65536(64KB)。</li> <li><code>MessageRetentionPeriod</code> - 消息在該 Queue 中最長的存活時間,從發送到該隊列開始經過此參數指定的時間后,不論消息是否被取出過都將被刪除,單位為秒。60 (1分鐘)-1296000 (15 天)范圍內某個整數值,默認值為345600 (4 天)</li> <li><code>VisibilityTimeout</code> - 消息從該 Queue 中取出后從Active狀態變成Inactive狀態后的持續時間,單位為秒。1-43200(12小時)范圍內的某個值整數值,默認值為30(秒)</li> <li><code>PollingWaitSeconds</code> - 當 Queue 中沒有消息時,針對該 Queue 的 ReceiveMessage 請求最長的等待時間,單位為秒。0-30秒范圍內的某個整數值,默認值為0(秒)</li> </ul>
</li>
</ul> </li>
create (metaoverride, callback)
- [CreateQueue] - 該接口用于創建一個新的隊列。隊列名稱是一個不超過256個字符的字符串,必須以字母或數字為首字符,剩余部分可以包含字母、數字和橫劃線(-)。metaoverride=true
- [SetQueueAttributes] - 該接口用于修改消息隊列的屬性。delete (callback)
- [DeleteQueue] - 該接口用于刪除一個已創建的隊列。get (callback)
- [GetQueueAttributes] - 該接口用于獲取某個已創建隊列的屬性,返回屬性除了創建隊列時設置的可設置屬性外,還可以取到隊列創建時間、隊列屬性修改最后時間以及隊列中的各類消息統計數(近似值)。list (headers, callback)
- [ListQueue] - 該接口用于列出 AccountId 下的隊列列表,可分頁獲取數據。返回結果中只包含 QueueURL 屬性,如需進一步獲取消息隊列的屬性可以通過 GetQueueAttributes 接口(詳見本文檔 GetQueueAttributes 接口)獲取。如果只是要獲取特定前綴的隊列列表,在調用此接口時指定 x-mns-prefix 參數,返回對隊列名稱的前綴匹配結果。headers
- [Optional] - 查詢屬性x-mns-marker
- 請求下一個分頁的開始位置,一般從上次分頁結果返回的NextMarker獲取。
<li><code>x-mns-ret-number</code> - 單次請求結果的最大返回個數,可以取1-1000范圍內的整數值,默認值為1000。</li> <li><code>x-mns-prefix</code> - 按照該前綴開頭的 queueName 進行查找。</li> </ul>
</li>
</ul> </li> </ul>
constructor (queue)
queue
- [Required] - 隊列send (options, callback)
- [SendMessage&BatchSendMessage] - 該接口用于發送消息到指定的隊列,普通消息發送到隊列隨即可被消費者消費。但是如果生產者發送一個消息不想馬上被消費者消費(典型的使用場景為定期任務),生產者在發送消息時設置 DelaySeconds 參數就可以達到此目的。發送帶 DelaySeconds 參數值大于0的消息初始狀態為 Delayed,此時消息不能被消費者消費,只有等 DelaySeconds 時間后消息變成 Active 狀態后才可消費。options
- [Required]MessageBody
- [Required] - 消息正文。UTF-8字符集
<li><code>DelaySeconds</code> - [Optional] - DelaySeconds 指定的秒數延后可被消費,單位為秒。0-604800秒(7天)范圍內某個整數值,默認值為0</li> <li><code>Priority</code> - [Optional] - 指定消息的優先級權值,優先級越高的消息,越容易更早被消費。取值范圍1~16(其中1為最高優先級),默認優先級為8</li> </ul>
</li>
</ul> </li>
receive (numOfMessages, waitseconds, callback)
- [ReceiveMessage&BatchReceiveMessage] - 該接口用于消費者消費隊列中的消息,ReceiveMessage 操作會將取得的消息狀態變成 Inactive,Inactive 的時間長度由 Queue 屬性 VisibilityTimeout 指定(詳見CreateQueue接口)。 消費者在 VisibilityTimeout 時間內消費成功后需要調用 DeleteMessage 接口刪除該消息,否則該消息將會重新變成為 Active 狀態,此消息又可被消費者重新消費。numOfMessages
- [Required(Batch)] - 本次BatchReceiveMessage最多獲取的消息條數waitseconds
- [Optional] - 本次 ReceiveMessage 請求最長的Polling等待時間,單位為秒delete (receiptHandle, callback)
- [DeleteMessage&BatchDeleteMessage] - 該接口用于刪除已經被消費過的消息,消費者需將上次消費后得到的 ReceiptHandle 作為參數來定位要刪除的消息。本操作只有在 NextVisibleTime 之前執行才能成功;如果過了 NextVisibleTime,消息重新變回 Active 狀態,ReceiptHandle 就會失效,刪除失敗,需重新消費獲取新的 ReceiptHandle。receiptHandle
- [Required] - 上次消費后返回的消息ReceiptHandle,詳見本文ReceiveMessage接口peek (numOfMessages, callback)
- [PeekMessage&BatchPeekMessage] - 該接口用于消費者查看消息,PeekMessage 與 ReceiveMessage 不同,PeekMessage 并不會改變消息的狀態,即被 PeekMessage 獲取消息后消息仍然處于 Active 狀態,仍然可被查看或消費;而后者操作成功后消息進入 Inactive ,在 VisibilityTimeout 的時間內不可被查看和消費。numOfMessages
- [Required(Batch)] - 本次 BatchPeekMessage 最多查看消息條數visibility (receiptHandle, visibilityTimeout, callback)
- [ChangeMessageVisibility] - 該接口用于修改被消費過并且還處于的 Inactive 的消息到下次可被消費的時間,成功修改消息的 VisibilityTimeout 后,返回新的 ReceiptHandle。receiptHandle
- [Required] - 上次消費后返回的消息 ReceiptHandle ,詳見 ReceiveMessage 接口visibilityTimeout
- [Required] - 從現在到下次可被用來消費的時間間隔,單位為秒subscribe (delay, numOfMessages, waitseconds, callback)
- 該接口使用輪詢的方式訂閱消息隊列中的消息。delay
- [Optional] - 一次ReceiveMessage輪詢等待時間,單位為秒 - 取值范圍整數值,默認值為0(秒)delay
- [Optional] - 一次BatchReceiveMessage最多獲取的消息條數 - 取值范圍1~16,默認值為16(條)delay
- [Optional] - 一次ReceiveMessage請求最長的Polling等待時間,單位為秒 - 取值范圍0~30,默認值為30(秒)constructor (mns, name, options)
mns
- [Required] - 使用自己參數初始化的 MNS 對象name
- [Required] - 主題名稱options
- [Optional] - 主題屬性MaximumMessageSize
- 發送到該 Topic 的消息體最大長度,單位為Byte。1024(1KB) - 65536(64KB)范圍內的某個整數值,默認值為65536(64KB)
</ul>
</li>
</ul> </li>
create (metaoverride, callback)
- [CreateTopic] - 該接口用于創建一個新的主題。主題名稱是一個不超過256個字符的字符串,必須以字母或數字為首字符,剩余部分可以包含字母、數字和橫劃線(-)。metaoverride=true
- [SetTopicAttributes] - 該接口用于修改主題的屬性。delete (callback)
- [DeleteTopic] - 該接口用于刪除一個已創建的主題。get (callback)
- [GetTopicAttributes] - 該接口用于獲取某個已創建主題的屬性,返回屬性除創建主題時的可設置屬性外,還可以獲取主題的消息最長存活時間、主題創建時間等。list (headers, callback)
- [ListTopic] - 該接口用于列出帳號下的主題列表,可分頁獲取數據。如果只是要獲取特定的主題列表,在調用接口時指定 x-mns-prefix 參數,服務端將返回主題名稱與前綴匹配的主題列表。headers
- [Optional] - 查詢屬性x-mns-marker
- 請求下一個分頁的開始位置,一般從上次分頁結果返回的NextMarker獲取。
<li><code>x-mns-ret-number</code> - 單次請求結果的最大返回個數,可以取1-1000范圍內的整數值,默認值為1000。</li> <li><code>x-mns-prefix</code> - 按照該前綴開頭的 topicName 進行查找。</li> </ul>
</li>
</ul> </li> </ul>
constructor (topic)
topic
- [Required] - 主題publish (options, callback)
- [PublishMessage] - 該接口用于發布者向指定的主題發布消息,消息發布到主題后隨即會被推送給 Endpoint 消費。options
- [Required]MessageBody
- [Required] - 消息正文。UTF-8字符集
</ul>
</li>
</ul> </li> </ul>
constructor (topic, name, options)
topic
- [Required] - 主題name
- [Required] - 訂閱名稱options
- [Required] - 訂閱屬性Endpoint
- [Required] - 描述此次訂閱中接收消息的終端地址 - 目前支持HttpEndpoint,必須以"http://"為前綴
<li><code>NotifyStrategy</code> - [Optional] - 描述了向 Endpoint 推送消息出現錯誤時的重試策略 - BACKOFF_RETRY 或者 EXPONENTIAL_DECAY_RETRY,默認為BACKOFF_RETRY,重試策略的具體描述請參考 基本概念/NotifyStrategy</li> <li><code>NotifyContentFormat</code> - [Optional] - 描述了向 Endpoint 推送的消息格式 - XML 或者 SIMPLIFIED,默認為 XML,消息格式的具體描述請參考 基本概念/NotifyContentFormat</li> </ul>
</li>
</ul> </li>
subscribe (metaoverride, callback)
- [Subscribe] - 該接口用于訂閱主題,創建 Subscription。Subscription 名稱是一個不超過 256 個字符的字符串,必須以字母或者數字為首字符,剩余部分可以包含字母、數字和橫華線(-)。創建Subscription 時,需要指定對應的 Endpoint,否則不合法,目前支持HttpEndpoint。metaoverride=true
- [SetSubscriptionAttributes] - 該接口用于修改 Subscription 的屬性。unsubscribe (callback)
- [Unsubscribe] - 該接口用于取消一個已創建的 Subscription。get (callback)
- [GetSubscriptionAttributes] - 該接口用于獲取 Subscription 的屬性。list (headers, callback)
- [ListSubscriptionByTopic] - 該接口用于列出某個主題下的 Subscription 列表,可分頁獲取數據。headers
- [Optional] - 查詢屬性x-mns-marker
- 請求下一個分頁的開始位置,一般從上次分頁結果返回的NextMarker獲取。
<li><code>x-mns-ret-number</code> - 單次請求結果的最大返回個數,可以取1-1000范圍內的整數值,默認值為1000。</li> <li><code>x-mns-prefix</code> - 按照該前綴開頭的 subscriptionName 進行查找。</li> </ul>
</li>
</ul> </li> </ul>
貢獻者
https://github.com/wzbg/aliyun-mns
依賴
fetch
- Fetch url contents. Supports gzipped content for quicker download, redirects (with automatic cookie handling, so no eternal redirect loops), streaming and piping etc.data2xml
- A data to XML converter with a nice interface (for NodeJS).xml2json
- Converts xml to json and vice-versa, using node-expat.
</ul>
我們在代碼中參考了 ALIYUN SDK,在此聲明。
License
The MIT License (MIT)
Copyright (c) 2016
</ul> </li>
</ul> </li>
</ul> </li>
</ul> </li> </ul>
主題接口
</ul> </li>
</ul> </li>
</ul> </li>
</ul> </li>
</ul> </li>
</ul> </li>
本文由用戶 EmmVUUX 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!