1.0.2 • Published 4 years ago
cluster-eventbus v1.0.2
Cluster EventBus
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)