mq-in-one
v1.0.3
Published
MQ-IN-ONE,聚合阿里云MNS、腾讯云CMQ等(http)队列服务
Downloads
52
Maintainers
Readme
MQ-In-One
MQ-IN-ONE,旨在聚合各家云平台(阿里云MNS、腾讯云CMQ等)的队列服务, 以使用相似的API来调用各家云平台的队列,使得切换不同云平台服务的时候 仅需要更改配置文件而不需要更改代码结构。
现已支持
- 腾讯云CMQ: 基于 kainonly/cmq-node-sdk 实现
- 阿里云MNS: 基于 InCar/ali-mns 实现
感谢以上库作者的贡献
安装
npm install mq-in-one
Quick Start
let MQInOne = require('mq-in-one')
let mq = new MQInOne({
// 不同厂商的MQ需要的配置不同,请查看各MQ的[配置项]
accountId: '<accountId>',
keyId: '<keyId>',
keySecret: '<keySecret>',
queueName: '<queueName>',
mqRegion: '<mqRegion>',
}, '<mqType>')
不同厂商的MQ需要的配置不同,请查看各MQ的配置项
获取消息
mq.receiveMessage().then(message => {
console.log('Message content:', message.getContent())
})
添加消息
mq.pushMessage('I am content', {
delaySeconds: 2 // 延迟2秒后可见
}).then(result => {
console.log('Sent message:', result)
})
轮询消息
mq.pollingMessage(30, (err, message) => {
if (err) {
console.error('Error occurred:', err)
} else {
console.log('Received message', message)
}
})
API Reference
MQIneOne
constructor
config
MQ配置项,不同厂商的MQ需要的配置不同,请查看各MQ的配置项
mqType
队列类型。现在支持: 阿里云MNS:
mns
, 腾讯云CMQcmq
logger
log4js的logger实例
pushMessage
: Promise<MessageContract>向队列添加消息
content
:String
- 消息内容options
:Object
- 消息更多设置项delaySeconds
- 需要延时多久该消息才可见(单位:秒)Supported:
mns
,cmq
priority
- 消息优先级Supported:
mns
receiveMessage
: Promise<MessageContract>接收队列中的消息
pollingWaitSeconds
:Number
- 请求的长轮询等待时间(单位:秒)Supported:
mns
,cmq
consumeMessage
: Promise<Boolean>消费(删除)消息
message
:MessageContract
- 要删除的信息
pollingMessage
不断轮询队列,若获取到新消息,则调用传入的handler函数
handler:
function
err
- 轮询错误message
:MessageContract
- 获取到的消息callback
:function
- optional如果
waitForCallback
为true
则会通过callback
参数 传入回调函数,且队列会等待回调后再继续轮询
waitForCallback
:Boolean
获取到消息后是否等待回调函数再继续轮询
MessageContract
constructor
content
- 消息内容handler
- 消息的句柄(用于删除消息)options
- 消息的附加属性(均为可选)messageId
- 消息Id,区别于handlerpriority
- 消息优先级enqueueTime
:Date
- 消息入队时间nextVisibleTime
:Date
- 消息下次可见时间firstDequeueTime
:Date
- 消息初次出队时间dequeueCount
:Number
- 出队次数(需为Number
类型)raw
- 创建消息的原始信息
getContent
:String
获取消息内容getHandler
获取消息句柄getMessageId
获取消息IdgetMsgPriority
获取消息优先度getEnqueueTime
获取消息入队时间getNextVisibleTime
获取消息下次可见时间getDequeueCount
获取消息出队次数getRawResponse
获取消息原始信息
配置项
公共配置项
queueName
队列名称
阿里云MNS
accountId
阿里云账户IDkeyId
阿里云 AccessKey IDkeySecret
阿里云 AccessKey SecretmqRegion
队列服务所在地域,例如杭州为hangzhou
,具体可查看MNS控制台上的endpoint
地址中的地域名
腾讯云CMQ
keyId
腾讯云 Secret IdkeySecret
腾讯云 Secret KeymqRegion
队列服务所在地域gz(广州),sh(上海),bj(北京),shjr(上海金融),szjr(深圳金融), hk(香港),cd(成都),ca(北美),usw(美西),sg(新加坡)
Contribute Guideline
欢迎大家的PR/Issues来帮助我们完善这个项目,但请请留下方便理解的注释。 :)
You are most welcome to make any contribution to improve this project, just please leave an understandable description of what you contribute :)
License
This Project is based on MIT License