fully interoperable with gearman clients and workers written in other languages
cons:
lacks elegant high level abstractions for doing work. A bit more boilerplate to write
only supports 1 server connection per client/worker
usage
examples
create a client, create 1 job, and handle it's completion
constgearman=require('gearman')letclient=gearman("localhost",4730,{timeout: 3000})// timeout in milliseconds. // handle timeout client.on('timeout',function(){console.log('Timeout occurred')client.close()})// handle finished jobsclient.on('WORK_COMPLETE',function(job){console.log('job completed, result:',job.payload.toString())client.close()})// connect to the gearman serverclient.connect(function(){// submit a job to uppercase a string with normal priority in the foregroundclient.submitJob('upper','Hello, World!')})
create a worker, register a function, and handle jobs
constgearman=require('gearman')letworker=gearman('127.0.0.1',4730)// handle jobs assigned by the serverworker.on('JOB_ASSIGN',function(job){console.log(job.func_name+' job assigned to this worker')letresult=job.payload.toString().toUpperCase()// notify the server the job is doneworker.sendWorkComplete(job.handle,result)// go back to sleep, telling the server we're ready for more workworker.preSleep()});// grab a job when the server signals one is availableworker.on('NOOP',function(){worker.grabJob()})// connect to the gearman server worker.connect(function(){// register the functions this worker is capable ofworker.addFunction('upper')// tell the server the worker is going to sleep, waiting for workworker.preSleep()});