node package manager
It’s your turn. Help us improve JavaScript. Take the 2017 JavaScript Ecosystem Survey »

messagehub

messagehub

Simple message, queue and pubsub system compatible with RabbitMQ.

Communicates events and jobs across processes and servers.

Installation

npm install messagehub

You also need to connect to a running RabbitMQ server at the host specified.

Documentation

Create

messagehub = require 'messagehub'
myhub = messagehub 'localhost', 'mychannel'

You can also send an AMQP url as the first parameter, or the options hash as describe here.

Events

Emit an event

messagehub = require 'messagehub'
myhub = messagehub 'localhost', 'mychannel'
myhub.emit 'messages.one', {key: "value"}

Observe an event (ALL handlers will trigger)

messagehub = require 'messagehub'
myhub = messagehub 'localhost', 'mychannel'
myhub.on 'messages.one', (data) ->
  console.log "MESSAGES.ONE", data

Jobs

Queue a job

messagehub = require 'messagehub'
myhub = messagehub 'localhost', 'mychannel'
myhub.job 'jobs.one', {key: "value"}

Handle a job (jobs are balanced between workers)

messagehub = require 'messagehub'
myhub = messagehub 'localhost', 'mychannel'
myhub.worker 'jobs.one', (data, done) ->
  console.log "JOBS.ONE", data
  done()

You can put more than one worker in the same file. It will only send you one job per worker registered.

messagehub = require 'messagehub'
myhub = messagehub 'localhost', 'mychannel'

# handler function
handleJobOne = (data, done) ->
  console.log "JOBS.ONE", data
  done()

# register 4 workers
myhub.worker 'jobs.one', handleJobOne
myhub.worker 'jobs.one', handleJobOne
myhub.worker 'jobs.one', handleJobOne
myhub.worker 'jobs.one', handleJobOne