Giter Club home page Giter Club logo

zeromq-ppworker's Introduction

zeromq-ppworker

ZeroMQ Reliable Request-Reply Paranoid Pirate Pattern - worker module

Don't know what this is? See the 0MQ Guide.

Usage

Use in conjunction with Lazy Pirate Server and Paranoid Pirate Queue.

Make sure you have 0MQ installed on your machine first (ie. the C libraries). For OS X you can do this:

$ brew install --universal zeromq

On Ubuntu:

$ sudo apt-get -y install libzmq3-dev

Then you should be able to install NPM modules that depend upon the 0MQ libs (like this one).

Paranoid Pirate example

For Paranoid Pirate we need three components- the Lazy Pirate client, Paranoid Pirate queue and Paranoid Pirate worker.

ppqueue.js (taken from https://github.com/lukebond/zeromq-ppqueue/blob/master/example/example.js):

var PPQueue = require('../index');
var ppq = new PPQueue({backendUrl: 'tcp://127.0.0.1:9001', frontendUrl: 'tcp://127.0.0.1:9000'});

ppworker.js (taken from https://github.com/lukebond/zeromq-ppworker/blob/master/example/example.js):

var PPWorker = require('../index');

function workerFn(cb) {
  console.log(Date.now() + ' - Got a request for work');
  return cb(JSON.stringify({ppworker: 'pretending to do work'}));
}

var ppw = new PPWorker({url: 'tcp://127.0.0.1:9001'}, workerFn);

Run all three together in different terminals and you should get output like this:

$ node lpclient
1406655819662 - Got work: {"ppworker":"pretending to do work"}
1406655819766 - Got work: {"ppworker":"pretending to do work"}
1406655819867 - Got work: {"ppworker":"pretending to do work"}
1406655819969 - Got work: {"ppworker":"pretending to do work"}
1406655820071 - Got work: {"ppworker":"pretending to do work"}
1406655820172 - Got work: {"ppworker":"pretending to do work"}
1406655820273 - Got work: {"ppworker":"pretending to do work"}
1406655820374 - Got work: {"ppworker":"pretending to do work"}
1406655820476 - Got work: {"ppworker":"pretending to do work"}
$ node ppqueue

(no output)

$ node ppworker
1406655819650 - Got a request for work
1406655819765 - Got a request for work
1406655819867 - Got a request for work
1406655819969 - Got a request for work
1406655820071 - Got a request for work
1406655820172 - Got a request for work
1406655820272 - Got a request for work
1406655820374 - Got a request for work
1406655820476 - Got a request for work

The Paranoid Pirate queue is routing the request-reply pairs between the client and the worker.

Tests

A bit thin on the ground at the moment, but there is an integration test in the ppqueue project that tests Lazy Pirate client, Paranoid Pirate queue and Paranoid Pirate worker together.

Licence

MIT

zeromq-ppworker's People

Contributors

lukebond avatar tomgco avatar

Stargazers

Philipp Strathausen avatar Peter Johnson avatar

Watchers

James Cloos avatar  avatar

Forkers

tomgco

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.