bmqb-mns
Version:
BMQB aliyun mns
125 lines (105 loc) • 2.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const priorityMapping = {
mns: {
low: 2,
normal: 8,
high: 12,
critical: 16
}
};
const msgMeta = {
id: null,
msg: {
adapter: 'mns',
delay: 0,
priority: 'normal',
content: null
},
enqueueTime: 0, // 入队列时间
nextVisibleTime: 0, // 下次可见时间
rawMsg: null
};
class MQMsg {
constructor(_ref) {
let content = _ref.content;
var _ref$delay = _ref.delay;
let delay = _ref$delay === undefined ? 0 : _ref$delay;
var _ref$priority = _ref.priority;
let priority = _ref$priority === undefined ? 'normal' : _ref$priority;
var _ref$adapter = _ref.adapter;
let adapter = _ref$adapter === undefined ? 'mns' : _ref$adapter;
if (!content) {
throw new Error('content donot be empty!');
}
if (!adapter || !(adapter in priorityMapping)) {
throw new Error('Donot support this adapter!');
}
const priorityOptions = priorityMapping[adapter];
if (!(priority in priorityOptions)) {
throw new Error('Donot support this priority!');
}
if (!isFinite(delay)) {
throw new Error('Argument delay must be an Integer!');
}
const msg = {
adapter: adapter,
delay: delay <= 604800 && delay >= 0 ? delay : 0,
priority: priority,
content: content
};
this.data = _lodash2.default.merge({}, msgMeta);
this.data.msg = _lodash2.default.merge(this.data.msg, msg);
}
setId(id) {
if (_lodash2.default.isEmpty(id)) {
throw new Error('Invalid id!');
}
this.data.id = id;
}
getId() {
return this.data.id;
}
setEnqueueTime(time) {
if (!isFinite(time)) {
throw new Error('Invalid enqueueTime!');
}
this.data.enqueueTime = parseInt(time, 0);
}
getEnqueueTime() {
return this.data.enqueueTime;
}
setNextVisibleTime(time) {
if (!isFinite(time)) {
throw new Error('Invalid nextVisibleTime!');
}
this.data.nextVisibleTime = time;
}
getNextVisibleTime() {
return this.data.nextVisibleTime;
}
getMsg() {
return this.data.msg;
}
getMsgContent() {
return this.data.msg.content;
}
setRawMsg(rawMsg) {
this.data.rawMsg = rawMsg;
}
getRawMsg() {
return this.data.rawMsg;
}
getDelay() {
return this.data.msg.delay;
}
getPriority() {
return this.data.msg.priority;
}
}
exports.default = MQMsg;