Я пытаюсь, чтобы мой мастер распределял работу среди рабочих, и единственное, что он делает, это рассылает сообщения всем рабочим, как только он получил сообщение от одного из работников.
У меня естьпопытался включить worker.send внутри функции worker.on, как вы можете видеть ниже. По какой-то причине он будет печатать каждый рабочий идентификатор «text to», за которым следует тот же идентификатор, но не печатать другие комбинации. (напр. «0 текст к 3»)
const cluster = require('cluster')
const numCPUs = require('os').cpus().length
if (cluster.isMaster) {
for (let i = 0; i < numCPUs; i++) {
const worker = cluster.fork({id: i})
worker.on('message', text => {
worker.send(text)
})
}
}
else {
const id = Number(process.env.id)
let messagesReceived = 0
process.send(id)
process.on('message', text => {
console.log(text, 'text to', id)
messagesReceived++
})
if (messagesReceived >= numCPUs) process.exit()
}
По сути, в этом примере я хочу, чтобы каждый работник мог отправлять свой собственный идентификатор мастеру, а мастеру - отправлять сообщение всемрабочие. Каждый работник должен напечатать каждую комбинацию числа «текст в» число. Числа растут, сколько рабочих.