Search
 
SCRIPT & CODE EXAMPLE
 

JAVASCRIPT

nodejs cluster

import { BullQueue } from '@libs/lib.bullmq'
import cluster, { Worker } from 'cluster'
import os from 'os'

const clusterWorker = (fn: () => void) => {
	if (cluster.isPrimary) {
		const totalCore: number = os.cpus().length
		const totalWorker: any[] = []

		// calling worker
		for (let i = 0; i < totalCore; i++) {
			cluster.fork()
		}

		// extract worker data
		for (let j in cluster.workers) {
			totalWorker.push(j as any)
		}

		// tell me worker for kill worker is worker dead
		totalWorker.forEach(async (worker: number): Promise<void> => {
			await cluster.workers[worker].send({
				from: 'isPrimary',
				type: 'SIGKILL',
				message: 'cleanup is worker dead and change to new worker'
			})
		})

		// list status worker already running
		cluster.on('online', (worker: Worker) => {
			if (worker.isConnected()) {
				console.info(`worker: ${worker.id} is online - pid: ${worker.process.pid}`)
			}
		})

		// create new worker if worker is dead
		cluster.on('exit', (worker: Worker, _code: number, _signal: string) => {
			if (worker.isDead()) {
				console.info(`worker: ${worker.id} is dead - pid: ${worker.process.pid}`)
			}
			cluster.fork()
		})
	} else {
		if (cluster.isWorker) {
			process.send('ok captain', (err: Error) => {
				if (!err) fn()
			})
		}
	}
}

// result value
const queueProcess = async () => {
	setTimeout(() => {
		console.log("hello wordl")
	}, 2000)
}

clusterWorker(queueProcess)
Comment

PREVIOUS NEXT
Code Example
Javascript :: sign javascript 
Javascript :: jwt npm 
Javascript :: redux form 
Javascript :: props history 
Javascript :: javascript code for find the last element in array 
Javascript :: console.log is not a function 
Javascript :: unit testing for react 
Javascript :: react native notifications error 
Javascript :: how to sort an array 
Javascript :: build angular project 
Javascript :: lettre au hasard javascript 
Javascript :: passport js npm 
Javascript :: JavaScript finally() method 
Javascript :: radio button in reactive forms angular material 
Javascript :: how to declare 3d array in javascript 
Javascript :: react class names 
Javascript :: loadsh debounce 
Javascript :: javascript Prevent Object MutationPassed 
Javascript :: mongodb mongoose concatenate two values before get 
Javascript :: query relation data in mongoose 
Javascript :: datetimepicker 
Javascript :: You are getting a `numbers` array. Return the sum of **negative** numbers only. //condition to check for negative 
Javascript :: how to set direction based on language in angular 
Javascript :: scriptmanager call javascript function 
Javascript :: theme ui currentcolor 
Javascript :: jquery unobtrusive validation asp.net core 
Javascript :: filter data from database for specific user in js 
Javascript :: node-google-spreadsheet color border 
Javascript :: att asm jmp 
Javascript :: react native bordered image drop with shadow fix 
ADD CONTENT
Topic
Content
Source link
Name
4+4 =