UNPKG

adonisjs-jobs

Version:

Job processing for AdonisJS

28 lines (27 loc) 975 B
import ClosureJob from './jobs/closure_job.js'; export class Dispatcher { app; constructor(app) { this.app = app; } async dispatch(jobOrClosure, payload, options = {}) { let isClosure = !(typeof jobOrClosure === 'function' && /^class\s/.test(jobOrClosure.toString())); let job = isClosure ? ClosureJob : jobOrClosure; payload = isClosure ? { serializedClosure: jobOrClosure.toString(), } : payload; // @ts-ignore const config = this.app.config.get('jobs', {}); // @ts-ignore const queues = await this.app.container.make('jobs.queues'); const queueName = options.queueName || config.queues[0]; const queue = queues[queueName]; if (!queue) { throw new Error(`Queue ${queueName} not found`); } const bullmqJob = await queue.add(job.name, payload, options); return bullmqJob.id; } }