ali-mns-sdk
Version:
The nodejs SDK for aliyun mns service
128 lines • 11 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const Util = require("util");
const MQ_1 = require("./MQ");
const NotifyRecv_1 = require("./NotifyRecv");
const Debug_1 = require("./utils/Debug");
class MQBatch extends MQ_1.MQ {
constructor(name, account, region) {
super(name, account, region);
this._notifyRecv = null;
}
sendP(msg, priority, delaySeconds) {
if (typeof msg === 'string') {
return super.sendP(msg, priority, delaySeconds);
}
else {
const body = { Messages: { '#list': [] } };
for (const m of msg) {
const b64 = this.utf8ToBase64(m.getMsg());
const xMsg = { Message: { MessageBody: b64 } };
xMsg.Message.Priority = m.getPriority();
xMsg.Message.DelaySeconds = m.getDelaySeconds();
body.Messages['#list'].push(xMsg);
}
Debug_1.default('POST ' + this._url, body);
this._openStack.accumulateNextGASend('MQBatch.sendP');
return this._openStack.sendP('POST', this._url, body);
}
}
recvP(waitSeconds, numOfMessages) {
if (numOfMessages === undefined)
numOfMessages = 16;
if (numOfMessages && numOfMessages > 1) {
const self = this;
let url = this._url;
url += '?numOfMessages=' + numOfMessages;
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: self._recvTolerance * 1000 };
if (waitSeconds)
options.timeout += waitSeconds * 1000;
self._openStack.accumulateNextGASend('MQBatch.recvP');
self._openStack.sendP('GET', url, null, null, options).then(data => {
Debug_1.default(data);
self.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);
}
});
});
}
else {
return super.recvP(waitSeconds);
}
}
peekP(numOfMessages) {
if (numOfMessages === undefined)
numOfMessages = 16;
if (numOfMessages && numOfMessages > 1) {
const self = this;
let url = this._url + '?peekonly=true';
url += '&numOfMessages=' + numOfMessages;
Debug_1.default('GET ' + url);
this._openStack.accumulateNextGASend('MQBatch.peekP');
return this._openStack.sendP('GET', url).then(data => {
Debug_1.default(data);
self.decodeB64Messages(data);
return data;
});
}
else {
return super.peekP();
}
}
deleteP(receiptHandle) {
if (typeof receiptHandle === 'string') {
super.deleteP(receiptHandle);
}
else {
Debug_1.default('DELETE ' + this._url, receiptHandle);
const body = { ReceiptHandles: { '#list': [] } };
for (const h of receiptHandle) {
const r = { ReceiptHandle: h };
body.ReceiptHandles['#list'].push(r);
}
this._openStack.accumulateNextGASend('MQBatch.deleteP');
return this._openStack.sendP('DELETE', this._url, body);
}
}
// 消息通知.每当有消息收到时,都调用cb回调函数
// 如果cb返回true,那么将删除消息,否则保留消息
notifyRecv(cb, waitSeconds, numOfMessages) {
// lazy create
if (this._notifyRecv === null)
this._notifyRecv = new NotifyRecv_1.NotifyRecv(this);
return this._notifyRecv.notifyRecv(cb, waitSeconds || 5, numOfMessages || 16);
}
decodeB64Messages(data) {
if (data && data.Messages && data.Messages.Message) {
if (!Util.isArray(data.Messages.Message)) {
// Just a single message, use an array to hold it
const msg = data.Messages.Message;
data.Messages.Message = [msg];
}
for (const msg of data.Messages.Message) {
if (msg.MessageBody)
msg.MessageBody = this.base64ToUtf8(msg.MessageBody);
}
}
else {
super.decodeB64Messages(data);
}
}
}
exports.MQBatch = MQBatch;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTVFCYXRjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9NUUJhdGNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkJBQTZCO0FBRzdCLDZCQUEwQjtBQUUxQiw2Q0FBMEM7QUFDMUMseUNBQWtDO0FBRWxDLE1BQWEsT0FBUSxTQUFRLE9BQUU7SUFDN0IsWUFBWSxJQUFZLEVBQUUsT0FBZ0IsRUFBRSxNQUFlO1FBQ3pELEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBd0hyQixnQkFBVyxHQUFxQixJQUFJLENBQUM7SUF2SC9DLENBQUM7SUFFTSxLQUFLLENBQUMsR0FBbUIsRUFBRSxRQUFpQixFQUFFLFlBQXFCO1FBQ3hFLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFO1lBQzNCLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQ2pEO2FBQU07WUFDTCxNQUFNLElBQUksR0FBUSxFQUFFLFFBQVEsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ2hELEtBQUssTUFBTSxDQUFDLElBQUksR0FBRyxFQUFFO2dCQUNuQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2dCQUMxQyxNQUFNLElBQUksR0FBUSxFQUFFLE9BQU8sRUFBRSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO2dCQUNwRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFFaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxD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