UNPKG

ali-mns-sdk

Version:

The nodejs SDK for aliyun mns service

165 lines 13.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Util = require("util"); const NotifyRecv_1 = require("./NotifyRecv"); const OpenStack_1 = require("./OpenStack"); const Region_1 = require("./Region"); const Debug_1 = require("./utils/Debug"); // The MQ class MQ { // The constructor. name & account is required. // region can be "hangzhou", "beijing" or "qingdao", the default is "hangzhou" constructor(name, account, region) { this._notifyRecv = null; this._recvTolerance = 5; // 接收消息的容忍时间(单位:秒) this._region = new Region_1.Region(Region_1.City.Hangzhou); this._pattern = '%s://%s.mns.%s.aliyuncs.com/queues/%s'; this._name = name; this._account = account; // region if (region) { if (typeof region === 'string') this._region = new Region_1.Region(region, Region_1.NetworkType.Public, Region_1.Zone.China); else this._region = region; } // make url this._urlAttr = this.makeAttrURL(); this._url = this.makeURL(); // create the OpenStack object this._openStack = new OpenStack_1.OpenStack(account); } getName() { return this._name; } getAccount() { return this._account; } getRegion() { return this._region; } // 获取MQ的属性值 getAttrsP() { Debug_1.default('GET ' + this._urlAttr); return this._openStack.sendP('GET', this._urlAttr); } // 设置MQ的属性值 setAttrsP(options) { const body = { Queue: options }; Debug_1.default('PUT ' + this._urlAttr, body); return this._openStack.sendP('PUT', this._urlAttr + '?metaoverride=true', body); } // 发送消息 sendP(msg, priority, delaySeconds) { const b64 = this.utf8ToBase64(msg); const body = { Message: { MessageBody: b64 } }; if (!isNaN(priority)) body.Message.Priority = priority; if (!isNaN(delaySeconds)) body.Message.DelaySeconds = delaySeconds; Debug_1.default('POST ' + this._url, body); this._openStack.accumulateNextGASend('MQ.sendP'); return this._openStack.sendP('POST', this._url, body); } // 接收消息容忍时间(秒) getRecvTolerance() { return this._recvTolerance; } setRecvTolerance(value) { this._recvTolerance = value; } // 接收消息 // waitSeconds, 最久等待多少秒0~30 recvP(waitSeconds) { const _this = this; let url = this._url; if (waitSeconds) url += '?waitseconds=' + waitSeconds; Debug_1.default('GET ' + url); return new Promise((resolve, reject) => { // use the timeout mechanism inside the request module const options = { timeout: _this._recvTolerance * 1000 }; if (waitSeconds) options.timeout += waitSeconds * 1000; _this._openStack.accumulateNextGASend('MQ.recvP'); _this._openStack.sendP('GET', url, null, null, options).then(data => { Debug_1.default(data); _this.decodeB64Messages(data); resolve(data); }, ex => { // for compatible with 1.x, still use literal "timeout" if (ex.code === 'ETIMEDOUT') { const exTimeout = new Error('timeout'); exTimeout.innerException = ex; exTimeout.code = ex.code; reject(exTimeout); } else { reject(ex); } }); }); } // 检查消息 peekP() { const _this = this; const url = this._url + '?peekonly=true'; Debug_1.default('GET ' + url); this._openStack.accumulateNextGASend('MQ.peekP'); return this._openStack.sendP('GET', url).then(data => { Debug_1.default(data); _this.decodeB64Messages(data); return data; }); } // 删除消息 deleteP(receiptHandle) { const url = this._url + '?ReceiptHandle=' + receiptHandle; Debug_1.default('DELETE ' + url); this._openStack.accumulateNextGASend('MQ.deleteP'); return this._openStack.sendP('DELETE', url); } // 保留消息 reserveP(receiptHandle, reserveSeconds) { const url = this._url + '?ReceiptHandle=' + receiptHandle + '&VisibilityTimeout=' + reserveSeconds; Debug_1.default('PUT ' + url); this._openStack.accumulateNextGASend('MQ.reserveP'); return this._openStack.sendP('PUT', url); } // 消息通知.每当有消息收到时,都调用cb回调函数 // 如果cb返回true,那么将删除消息,否则保留消息 notifyRecv(cb, waitSeconds) { // lazy create if (this._notifyRecv === null) this._notifyRecv = new NotifyRecv_1.NotifyRecv(this); return this._notifyRecv.notifyRecv(cb, waitSeconds || 5); } // 停止消息通知 notifyStopP() { if (this._notifyRecv === null) return Promise.resolve(0); else return this._notifyRecv.notifyStopP(); } utf8ToBase64(src) { const buf = new Buffer(src, 'utf8'); return buf.toString('base64'); } base64ToUtf8(src) { const buf = new Buffer(src, 'base64'); return buf.toString('utf8'); } decodeB64Messages(data) { if (data && data.Message && data.Message.MessageBody) { data.Message.MessageBody = this.base64ToUtf8(data.Message.MessageBody); } } makeAttrURL() { return Util.format(this._pattern, this._account.getHttps() ? 'https' : 'http', this._account.getAccountId(), this._region.toString(), this._name); } makeURL() { return this.makeAttrURL() + '/messages'; } } exports.MQ = MQ; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTVEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvTVEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw2QkFBNkI7QUFHN0IsNkNBQTBDO0FBQzFDLDJDQUF3QztBQUN4QyxxQ0FBMkQ7QUFDM0QseUNBQWtDO0FBRWxDLFNBQVM7QUFDVCxNQUFhLEVBQUU7SUFDYiwrQ0FBK0M7SUFDL0MsOEVBQThFO0lBQzlFLFlBQVksSUFBWSxFQUFFLE9BQWdCLEVBQUUsTUFBd0I7UUE0SzFELGdCQUFXLEdBQWdCLElBQUksQ0FBQztRQUNoQyxtQkFBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLGtCQUFrQjtRQUd4QyxZQUFPLEdBQUcsSUFBSSxlQUFNLENBQUMsYUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBR3BDLGFBQVEsR0FBRyx1Q0FBdUMsQ0FBQztRQWxMekQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsU0FBUztRQUNULElBQUksTUFBTSxFQUFFO1lBQ1YsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRO2dCQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxlQUFNLENBQUMsTUFBTSxFQUFFLG9CQUFXLENBQUMsTUFBTSxFQUFFLGFBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzs7Z0JBQzdGLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1NBQzVCO1FBRUQsV0FBVztRQUNYLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRTNCLDhCQUE4QjtRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUkscUJBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU0sT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLEtB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