Creates child processes using nodejs files to distribute work. Utilizes the process.send to pipe data to the workers. Workers run in strict mode.
Installation
npm install node-blaster -s
Options
maxWorkers
defaults to 1, use your pysical cores as a guide where main thread is running this library. (physical cores -1)
Using this library requires a js file that can run as a seperate process.
// do work
const fs = require('fs');
console.log(`Hello World of work ${new Date()}`);
process.on('message', (msg) =>{
fs.writeFileSync(msg.path, JSON.stringify(msg.data));
})
const { NodeBlaster } = require('node-blaster');
//create the instance
const blaster = new NodeBlaster('./hellowork.js', {maxWorkers: 3});
function doWork() {
blaster.send({path: './file1.text', data : {"Value": "JSON data3"}});
blaster.send({path: './file2.text', data : {"Value": "JSON data2"}});
blaster.send({path: './file3.text', data : {"Value": "JSON data1"}});
// write again
blaster.send({path: './file4.text', data : {"Value": "JSON data3"}});
blaster.send({path: './file5.text', data : {"Value": "JSON data2"}});
blaster.send({path: './file6.text', data : {"Value": "JSON data1"}});
}
doWork()
// stop all child processes
setTimeout(() =>{blaster.stop(true);}, 1000);
- Writing lots of files. (use streams)
- Making any self contained node file/process a worker process.
- melting CPU's :)