UNPKG

10.8 kBSource Map (JSON)View Raw
1{"version":3,"file":"Task.js","sourceRoot":"","sources":["../src/Task.ts"],"names":[],"mappings":"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","sourcesContent":["import { channelManager } from './ChannelManager'\nimport { TaskManager } from \"./TaskManager\"\nimport { Channel } from \"amqplib/callback_api\"\n\nimport uuid = require(\"node-uuid\")\nimport util = require(\"util\")\n\nconst EXCHANGE_PREFIX = \"nimbus:jobs:\";\nconst EXCHANGE_OPTIONS = {durable: true, autoDelete: false};\n\nconst JOB_QUEUE_PREFIX = \"nimbus:jobs:queue:\";\nconst JOB_QUEUE_OPTIONS = {durable: true, autoDelete: false};\n\nconst debug = util.debuglog(\"amqptools\");\n\nexport interface TaskParams {\n title: string,\n data: any\n}\n\nexport class Task {\n uuid:string;\n type:string;\n params:TaskParams;\n taskCallback: any;\n opts: any;\n static taskManager:TaskManager;\n private consumerTask: string\n\n constructor(type:string, params?:TaskParams) {\n this.uuid = uuid.v4();\n this.type = type;\n this.params = params;\n\n channelManager.on(\"reconnect\", this.onReconnect);\n channelManager.on(\"finalize\", this.onFinalize);\n }\n\n onReconnect = () => {\n if(this.taskCallback) {\n debug(\"Trying to re establish consuming on task queue %s\", this.queueName);\n this.consume();\n }\n }\n\n onFinalize = () => {\n if(this.taskCallback) {\n debug(\"Cancel consuming on task queue %s because of the finalization process\", this.queueName);\n this.cancel();\n }\n }\n\n get exchangeName() {\n return EXCHANGE_PREFIX + Task.taskManager.service;\n }\n\n get queueName() {\n return JOB_QUEUE_PREFIX + this.type;\n }\n\n /* deprecated, use submit instead */\n start(cb?) {\n return this.submit(cb)\n }\n\n submit(cb?) {\n if (!this.params) return;\n\n channelManager.getChannel()\n .then(() => this.assertExchange())\n .then(() => this.assertQueue())\n .then(() => this.bindQueue())\n .then((channel) => {\n let params = JSON.parse(JSON.stringify(this.params));\n params['uuid'] = this.uuid;\n var eventData = new Buffer(JSON.stringify(params));\n\n channel.publish(this.exchangeName, this.type, eventData);\n if (cb) cb();\n });\n\n return this;\n }\n\n private assertExchange() {\n return channelManager.getChannel().then((channel) => {\n return new Promise((resolve, reject) => {\n channel.assertExchange(this.exchangeName, 'direct', EXCHANGE_OPTIONS, (err) => {\n if (err) return reject(err);\n resolve(channel);\n })\n });\n })\n }\n\n private assertQueue() {\n return channelManager.getChannel().then((channel) => {\n return new Promise<Channel>((resolve, reject) => {\n channel.assertQueue(this.queueName, JOB_QUEUE_OPTIONS, (err) => {\n if (err) return reject(err);\n resolve(channel);\n })\n })\n })\n }\n\n private bindQueue() {\n return channelManager.getChannel().then((channel) => {\n channel.bindQueue(this.queueName, this.exchangeName, this.type);\n return channel;\n });\n }\n\n purgeQueue() {\n return channelManager.getChannel().then((channel) => {\n return new Promise((resolve, reject) => {\n channel.checkQueue(this.queueName, (err, ok) => {\n if (err) return resolve(null);\n if (ok) {\n return channel.purgeQueue(this.queueName, (err, reply) => {\n if (err) return reject(err);\n resolve(reply)\n })\n }\n resolve(null);\n })\n });\n });\n }\n\n consume() {\n return channelManager.getChannel()\n .then(() => this.assertQueue())\n .then((channel) => {\n channel.prefetch(this.opts.prefetchCount);\n debug(\"Attaching task listener for %s, prefetch=%d\", this.type, this.opts.prefetchCount);\n channel.consume(this.queueName, (msg) => {\n try {\n var taskData = JSON.parse(msg.content.toString());\n Task.taskManager.onStartProcesTask(taskData)\n this.taskCallback(taskData, errRes => {\n Task.taskManager.onEndProcessTask(taskData, errRes)\n if (errRes && errRes.nack) {\n // dead letter the message\n channel.nack(msg, false, false)\n } else {\n channel.ack(msg)\n }\n })\n } catch (err) {\n Task.taskManager.onEndProcessTask(taskData, err)\n console.error('Malformed message', msg.content.toString(), err)\n channel.ack(msg)\n }\n }, {noAck: false}, (err, ok) => {\n this.consumerTag = ok.consumerTag\n });\n });\n }\n\n cancel() {\n channelManager.getChannel().then((channel) => {\n channel.cancel(this.consumerTag);\n channelManager.removeListener(\"reconnect\", this.onReconnect);\n channelManager.removeListener(\"finalize\", this.onFinalize);\n })\n }\n\n processTask(opts, taskCallback) {\n if(this.taskCallback) {\n throw new Error(\"Task callback already set\");\n }\n if(typeof opts === \"function\") {\n taskCallback = opts;\n opts = {};\n }\n this.taskCallback = taskCallback;\n opts = opts || {};\n opts.prefetchCount = opts.prefetchCount || 1;\n this.opts = opts;\n return this.consume();\n }\n}\n"]}
\No newline at end of file