UNPKG

8.68 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\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 }\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 get exchangeName() {\n return EXCHANGE_PREFIX + Task.taskManager.service;\n }\n\n get queueName() {\n return JOB_QUEUE_PREFIX + this.type;\n }\n\n start(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 var taskData = JSON.parse(msg.content.toString());\n this.taskCallback(taskData, err => {\n if (err && err.nack) {\n // dead letter the message\n channel.nack(msg, false, false)\n } else {\n channel.ack(msg)\n }\n })\n }, {noAck: false});\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