Skip to content

matomesc/gossip

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gossip

Simple distributed messaging built with ZeroMQ.

Build Status

Install

npm install gossip

Note:

Make sure you have you have ZeroMQ v3.2.3+ installed.

If you are using OS X you can use brew to install ZeroMQ:

brew install zeromq

For Windows / UNIX check the instructions here..

Quick Start

Suppose you wanted to monitor the temperature of a bunch of remote gauges so things don't blow up.

A typical setup for this would be to run a monitor Node and a gauge Node.

This would look like:

//
// Gauges server
//

var gossip = require('gossip');

// Nodes are the building block of gossip. You should run one node per process.
// They can send and receive messages to / from a cluster of nodes.
var node = new gossip.Node('ipc://temp-gauges');

// You can subscribe to messages you are interested in.
// Any node can check your temperature by sending you a `check-temp` message. Yay!
node.on('check-temp', function (message, reply) {
  var gauge = gauges[message.data.gauge];

  // read the temperature
  var temp = gauge.readTemp();

  // send a response back
  var response = {
    temp: temp,
    time: Date.now()
  };

  node.reply(message, response);
});


//
// Monitor server
//

var gossip = require('gossip');

var node = new gossip.Node('ipc://temp-monitor');

// Join the monitor to the gauges. This will allows the node to send messages to any nodes that are known
// by the node you are connecting to.
node.join('ipc://temp-gauges');

setInterval(function () {
  // check temperature
  node.send('check-temp', { gauge: 'main' }, function (err, response) {
    if (response.data.temp > 600) {
      // sound the alarm
    }
  }, 100);
});

API Docs

See here.

TODO

  • better docs
  • plugin system
  • durable sends plugin?
  • node abstraction
  • cluster cli
  • cluster cli config file
  • cluster visualization / management

About

Simple distributed messaging

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published