aliyun-mns - 阿里云 消息服务 非官方 SDK for node.js
EmmVUUX
9年前
来自: 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天)范围内某个整数值,默认值为0MaximumMessageSize
- 发送到该Queue的消息体的最大长度,单位为byte。1024(1KB)-65536(64KB)范围内的某个整数值,默认值为65536(64KB)。MessageRetentionPeriod
- 消息在该 Queue 中最长的存活时间,从发送到该队列开始经过此参数指定的时间后,不论消息是否被取出过都将被删除,单位为秒。60 (1分钟)-1296000 (15 天)范围内某个整数值,默认值为345600 (4 天)VisibilityTimeout
- 消息从该 Queue 中取出后从Active状态变成Inactive状态后的持续时间,单位为秒。1-43200(12小时)范围内的某个值整数值,默认值为30(秒)PollingWaitSeconds
- 当 Queue 中没有消息时,针对该 Queue 的 ReceiveMessage 请求最长的等待时间,单位为秒。0-30秒范围内的某个整数值,默认值为0(秒)
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获取。x-mns-ret-number
- 单次请求结果的最大返回个数,可以取1-1000范围内的整数值,默认值为1000。x-mns-prefix
- 按照该前缀开头的 queueName 进行查找。
constructor (queue)
queue
- [Required] - 队列
send (options, callback)
- [SendMessage&BatchSendMessage] - 该接口用于发送消息到指定的队列,普通消息发送到队列随即可被消费者消费。但是如果生产者发送一个消息不想马上被消费者消费(典型的使用场景为定期任务),生产者在发送消息时设置 DelaySeconds 参数就可以达到此目的。发送带 DelaySeconds 参数值大于0的消息初始状态为 Delayed,此时消息不能被消费者消费,只有等 DelaySeconds 时间后消息变成 Active 状态后才可消费。options
- [Required]MessageBody
- [Required] - 消息正文。UTF-8字符集DelaySeconds
- [Optional] - DelaySeconds 指定的秒数延后可被消费,单位为秒。0-604800秒(7天)范围内某个整数值,默认值为0Priority
- [Optional] - 指定消息的优先级权值,优先级越高的消息,越容易更早被消费。取值范围1~16(其中1为最高优先级),默认优先级为8
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)
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获取。x-mns-ret-number
- 单次请求结果的最大返回个数,可以取1-1000范围内的整数值,默认值为1000。x-mns-prefix
- 按照该前缀开头的 topicName 进行查找。
constructor (topic)
topic
- [Required] - 主题
publish (options, callback)
- [PublishMessage] - 该接口用于发布者向指定的主题发布消息,消息发布到主题后随即会被推送给 Endpoint 消费。options
- [Required]MessageBody
- [Required] - 消息正文。UTF-8字符集
constructor (topic, name, options)
topic
- [Required] - 主题name
- [Required] - 订阅名称options
- [Required] - 订阅属性Endpoint
- [Required] - 描述此次订阅中接收消息的终端地址 - 目前支持HttpEndpoint,必须以"http://"为前缀NotifyStrategy
- [Optional] - 描述了向 Endpoint 推送消息出现错误时的重试策略 - BACKOFF_RETRY 或者 EXPONENTIAL_DECAY_RETRY,默认为BACKOFF_RETRY,重试策略的具体描述请参考 基本概念/NotifyStrategyNotifyContentFormat
- [Optional] - 描述了向 Endpoint 推送的消息格式 - XML 或者 SIMPLIFIED,默认为 XML,消息格式的具体描述请参考 基本概念/NotifyContentFormat
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获取。x-mns-ret-number
- 单次请求结果的最大返回个数,可以取1-1000范围内的整数值,默认值为1000。x-mns-prefix
- 按照该前缀开头的 subscriptionName 进行查找。
贡献者
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.
我们在代码中参考了 ALIYUN SDK,在此声明。
License
The MIT License (MIT)
Copyright (c) 2016