mreinstein / node-gearman

⚙ Gearman client and worker for node
75 stars 13 forks source link

Gearman Client and Worker

Greenkeeper badge

tests

pros:

cons:

usage

NPM

examples

create a client, create 1 job, and handle it's completion

const gearman = require('gearman')

let client = gearman("localhost", 4730 , {timeout: 3000})  // timeout in milliseconds. 

// handle timeout 
client.on('timeout', function() {
    console.log('Timeout occurred')
    client.close()
})

// handle finished jobs
client.on('WORK_COMPLETE', function(job) {
    console.log('job completed, result:', job.payload.toString())
    client.close()
})

// connect to the gearman server
client.connect(function() {
    // submit a job to uppercase a string with normal priority in the foreground
    client.submitJob('upper', 'Hello, World!')
})

create a worker, register a function, and handle jobs

const gearman = require('gearman')

let worker = gearman('127.0.0.1', 4730, {KeepAlive: true}) // set KeepAlive true, so worker doesn't get disconnected by no traffic

// handle jobs assigned by the server
worker.on('JOB_ASSIGN', function(job) {
    console.log(job.func_name + ' job assigned to this worker')
    let result = job.payload.toString().toUpperCase()
    // notify the server the job is done
    worker.sendWorkComplete(job.handle, result)

    // go back to sleep, telling the server we're ready for more work
    worker.preSleep()
});

// grab a job when the server signals one is available
worker.on('NOOP', function() {  worker.grabJob() })

// connect to the gearman server    
worker.connect(function(){
    // register the functions this worker is capable of
    worker.addFunction('upper')

    // tell the server the worker is going to sleep, waiting for work
    worker.preSleep()
});