1.0.2 • Published 4 years ago

cluster-eventbus v1.0.2

Weekly downloads
3
License
ISC
Repository
github
Last release
4 years ago

Cluster EventBus

npm version Build Status Dependency Status DevDependency Status

Simple library for communicating different processes.

I developed the library for communicating different cluster processes. It also connects different machines in the same local network to share clusters and distribute the work.

$ npm install cluster-eventbus --save

Sample working on a Node cluster:

const numCPUs = require('os').cpus().length;
const cluster = require('cluster');
const EventBus = require('cluster-eventbus');

let eventBus = new EventBus({
    core: `MacBook Pro (914)`,
    debug: true
}).cluster(cluster);

if (cluster.isMaster) {
    for (let i = 1; i < numCPUs + 1; i++) {
        cluster.fork();
    }
} else {
    eventBus.prepareWorker(cluster, (params) => {
        
            // do something with params
            // and return something
        
            return {
                "message": `hello ${params.id}, I'm worker_${cluster.worker.id}`,
                "params_received": params
            };
        }
    );
}

Ask

Ask something to a worker:

let response = await eventBus.event(`MacBook Pro (914)`,`worker_1`, {
  "message": `hello worker 1`,
  "id": `test_worker`
})

Response model:

{
    "response": {},
    "error": true,
    "error_message": ""
}

Ask To All

Ask the same to all workers:

let response = await eventBus.eventAll({
  "message": `hello workers`,
  "id": `test_worker`,
  "data": {
      "method": "get_name"
  }
})

Response model:

{
    "responses": [{}, {}],
    "error": true,
    "error_messages": ["", ""]
}

Close Process

Close everything by calling:

await eventBus.closeAll();

Machine Name

EventBus.MACHINE_NAME

Response:

MacBook Pro (914)