UNPKG

bmqb-mns

Version:
125 lines (105 loc) 2.63 kB
'use strict'; 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;