mq-in-one v1.0.3
MQ-In-One
MQ-IN-ONE,旨在聚合各家云平台(阿里云MNS、腾讯云CMQ等)的队列服务, 以使用相似的API来调用各家云平台的队列,使得切换不同云平台服务的时候 仅需要更改配置文件而不需要更改代码结构。
现已支持
- 腾讯云CMQ: 基于 kainonly/cmq-node-sdk 实现
- 阿里云MNS: 基于 InCar/ali-mns 实现
感谢以上库作者的贡献
安装
npm install mq-in-oneQuick 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
MQIneOneconstructorconfigMQ配置项,不同厂商的MQ需要的配置不同,请查看各MQ的配置项
mqType队列类型。现在支持: 阿里云MNS:
mns, 腾讯云CMQcmqloggerlog4js的logger实例
pushMessage: Promise\<MessageContract>向队列添加消息
content:String- 消息内容options:Object- 消息更多设置项delaySeconds- 需要延时多久该消息才可见(单位:秒)Supported:
mns,cmqpriority- 消息优先级Supported:
mns
receiveMessage: Promise\<MessageContract>接收队列中的消息
pollingWaitSeconds:Number- 请求的长轮询等待时间(单位:秒) Supported:mns,cmq
consumeMessage: Promise\<Boolean>消费(删除)消息
message:MessageContract- 要删除的信息
pollingMessage不断轮询队列,若获取到新消息,则调用传入的handler函数
handler:
functionerr- 轮询错误message:MessageContract- 获取到的消息callback:function- optional 如果waitForCallback为true则会通过callback参数 传入回调函数,且队列会等待回调后再继续轮询
waitForCallback:Boolean获取到消息后是否等待回调函数再继续轮询
MessageContractconstructorcontent- 消息内容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