gearman client and worker library

Gearman Client and Worker

  • full implementation of worker and client
  • lean abstraction over raw gearman protocol
  • lots of unit tests
  • fast
  • small
  • fully interoperable with gearman clients and workers written in other languages
  • lacks elegant high level abstractions for doing work. A bit more boilerplate to write
  • only supports 1 server connection per client/worker
npm install gearman
npm run build
npm test
Gearman = require('gearman').Gearman
client = new Gearman("localhost"4730 {timeout: 3000}) # timeout in milliseconds.  
# handle timeout  
client.on 'timeout'() ->
    console.log 'Timeout occurred'
# handle finished jobs 
client.on 'WORK_COMPLETE'(job) ->
    console.log 'job completed, result:'job.payload.toString()
# connect to the gearman server 
client.connect ->
    # submit a job to uppercase a string with normal priority in the foreground 
    client.submitJob 'upper''Hello, World!'
Gearman = require('gearman').Gearman
worker = new Gearman(''4730) 
# handle jobs assigned by the server 
worker.on 'JOB_ASSIGN'(job) ->
    console.log job.func_name + ' job assigned to this worker'
    result = job.payload.toString().toUpperCase()
    # notify the server the job is done 
    worker.sendWorkComplete job.handleresult
    # go back to sleep, telling the server we're ready for more work 
# grab a job when the server signals one is available 
worker.on 'NOOP'->
# connect to the gearman server  
worker.connect ->
    # register the functions this worker is capable of 
    worker.addFunction 'upper'
    # tell the server the worker is going to sleep, waiting for work