Skip to content
Snippets Groups Projects
Job.js 741 B
Newer Older
const { jobs: { connectToJobQueue } } = require('pubsweet-server/src')
const logger = require('@pubsweet/logger')

module.exports = {
  schedule: async ({ queue, jobHandler, executionDate, params }) => {
    const jobQueue = await connectToJobQueue()

    // Add job to the queue
    await jobQueue.publishAfter(queue, params, {}, executionDate)

    // Subscribe to the job queue with an async handler
    await jobQueue.subscribe(queue, jobHandler)

    await jobQueue.onComplete(queue, job => {
      logger.info(job.data.response.value)
    })
  },
  cancelQueue: async name => {
    const jobQueue = await connectToJobQueue()

    await jobQueue.unsubscribe(name)
    logger.info(`Successfully unsubscribed from queue: ${name}`)
  },
}