Needless Patchouli Manufacture


    0.6.0 • Public • Published


    Hapi and MongoDB powered job queue.

    Build Status Coverage Status


    • Utilizes server methods for jobs
    • Jobs can be grouped together by name
    • Jobs or groups can be run in intervals using the later cron and text syntax.
    • Optional JSON api to control jobs
    • Jobs contain tasks to run. By default a job has just one task with no data. Job will run once for each task.


    npm install hapi-job-queue --save


    var server = new Hapi.Server();
    var mongoUrl = 'mongodb://localhost:27017/something';
    server.connection({port: 3000});
    server.method('emailUsers', function(data, done) {
      server.plugins.emailService.spam(, done);
      { register: require('hapi-job-queue'), options: {
        connectionUrl: mongoUrl,
        endpoint: '',
        jobs: [
            name: 'email-users',
            enabled: true,
            schedule: 'on the last day of the month',
            method: 'emailUsers', //server method
            tasks: [ // each task will run 'emailUsers' with the task as the data property
                group: 'pendingUsers'
                group: 'approvedUsers'
                group: 'newsletterUsers'
      } }
    ], function() {
      // server start etc...


    • connectionUrl - mongodb connection url
    • endpoint - Path for api endpoint. Set to false to disable. No trailing slash. (default: false)
    • auth - Auth strategy to use for api endpoints. (default: false)
    • concurrentTasks - Number of instances of method that can run simultaneously. Note: This is limited on a per job basis. Two jobs running at the same time will each have a max of concurrentTasks. (default: 5)
    • collection - DB collection to use. (default: Jobs)
    • verbose - Extra logging. Tagged hapi-job-queue, info. (default: true)
    • jobs - Array of job objects.
    • name - Name of the job. Used in api endpoints and methods.
    • enabled - Enables or disables a job.
    • single - Set to true if this job will be manually run and not on a timer. (default false)
    • schedule - (optional) Later style time definition.
    • cron - (optional) Later style cron definition.
    • cronSeconds - (optional) Use if the above cron setting is in seconds.
    • method - Method to run for each task or once when no tasks are assigned. Can be a hapi server method or a function. function(data, callback)
    • tasks - (optional) Array of data to be passed to job method. Each item in the array will spawn an instance of method.


    These methods can be found in

    • addJob - params: job, callback(err) - Adds a job. Uses same job format as options.
    • getJobs - params: callback(err) - Returns all jobs
    • enableJob - params: jobName, callback(err) - Enables a job.
    • disableJob - params: jobName, callback(err) - Disables a job.
    • runSingle - params: jobName, tasks, callback(err) - Runs a single job. Tasks uses the same task format in options.


    If you enable the web api these endpoints will be exposed.

    • GET / - Returns all jobs.
    • GET /enable/{jobName} - Enables a job
    • GET /disable/{jobName} - Disables a job
    • POST /run/{jobName} - Runs a job. Accepts a json payload of task data.


    npm i hapi-job-queue

    DownloadsWeekly Downloads






    Last publish


    • jga
    • dawnerd
    • ecwillis
    • orthagonal1
    • alaguna
    • aleperez92