aliyun-mns - 阿里云 消息服務 非官方 SDK for node.js

EmmVUUX 8年前發布 | 42K 次閱讀 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
    </li> </ul>

    主題接口

    在 samples/topic 目錄下的代碼示例,使用方法:

    • 將 sample/mns.js 中需要的參數修改
    • 打開需要執行的某個實例文件,如 create.js,將其中的參數改成你自己的 topic 實例參數
    • 執行示例文件即可, 如:

      cd samples/topic
      node --harmony_destructuring create

    API

    隊列接口

    Queue

    • 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] - 該接口用于修改消息隊列的屬性。
          • </ul> </li>

          • 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>

                Message

                • constructor (queue)
                  • queue - [Required] - 隊列
                  • </ul> </li>

                  • 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等待時間,單位為秒
                        • </ul> </li>

                        • delete (receiptHandle, callback) - [DeleteMessage&BatchDeleteMessage] - 該接口用于刪除已經被消費過的消息,消費者需將上次消費后得到的 ReceiptHandle 作為參數來定位要刪除的消息。本操作只有在 NextVisibleTime 之前執行才能成功;如果過了 NextVisibleTime,消息重新變回 Active 狀態,ReceiptHandle 就會失效,刪除失敗,需重新消費獲取新的 ReceiptHandle。
                          • receiptHandle - [Required] - 上次消費后返回的消息ReceiptHandle,詳見本文ReceiveMessage接口
                          • </ul> </li>

                          • peek (numOfMessages, callback) - [PeekMessage&BatchPeekMessage] - 該接口用于消費者查看消息,PeekMessage 與 ReceiveMessage 不同,PeekMessage 并不會改變消息的狀態,即被 PeekMessage 獲取消息后消息仍然處于 Active 狀態,仍然可被查看或消費;而后者操作成功后消息進入 Inactive ,在 VisibilityTimeout 的時間內不可被查看和消費。
                            • numOfMessages - [Required(Batch)] - 本次 BatchPeekMessage 最多查看消息條數
                            • </ul> </li>

                            • visibility (receiptHandle, visibilityTimeout, callback) - [ChangeMessageVisibility] - 該接口用于修改被消費過并且還處于的 Inactive 的消息到下次可被消費的時間,成功修改消息的 VisibilityTimeout 后,返回新的 ReceiptHandle。
                              • receiptHandle - [Required] - 上次消費后返回的消息 ReceiptHandle ,詳見 ReceiveMessage 接口
                              • visibilityTimeout - [Required] - 從現在到下次可被用來消費的時間間隔,單位為秒
                              • </ul> </li>

                              • subscribe (delay, numOfMessages, waitseconds, callback) - 該接口使用輪詢的方式訂閱消息隊列中的消息。
                                • delay - [Optional] - 一次ReceiveMessage輪詢等待時間,單位為秒 - 取值范圍整數值,默認值為0(秒)
                                • delay - [Optional] - 一次BatchReceiveMessage最多獲取的消息條數 - 取值范圍1~16,默認值為16(條)
                                • delay - [Optional] - 一次ReceiveMessage請求最長的Polling等待時間,單位為秒 - 取值范圍0~30,默認值為30(秒)
                                • </ul> </li> </ul>

                                  主題接口

                                  Topic

                                  • 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] - 該接口用于修改主題的屬性。
                                        • </ul> </li>

                                        • 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>

                                              Message

                                              • constructor (topic)
                                                • topic - [Required] - 主題
                                                • </ul> </li>

                                                • publish (options, callback) - [PublishMessage] - 該接口用于發布者向指定的主題發布消息,消息發布到主題后隨即會被推送給 Endpoint 消費。
                                                  • options - [Required]
                                                    • MessageBody - [Required] - 消息正文。UTF-8字符集
                                                    • </ul>
                                                      

                                                      </li>

                                                      </ul> </li> </ul>

                                                      Subscription

                                                      • 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 的屬性。
                                                            • </ul> </li>

                                                            • 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

 本文由用戶 EmmVUUX 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!