Jedním ze způsobů, jak to udělat, je přiřadit jedinečné číselné ID každému z vašich dokumentů MongoDB a přiřadit jedinečný číselný identifikátor každému z vašich pracovníků s node.js.
Mějte například env var s názvem NUM_WORKERS a poté v modulu node.js:
var NumWorkers = process.env.NUM_WORKERS || 1;
Potom musíte každému z vašich pracovníků přiřadit jedinečné, souvislé číslo instance (v rozsahu 0 až NumWorkers-1) (např. pomocí parametru příkazového řádku, který načte váš proces node.js při jeho inicializaci). Můžete to uložit do proměnné s názvem MyWorkerInstanceNum.
Když vyberete dokument z MongoDB, zavolejte následující funkci (předáním jedinečného documentId dokumentu jako parametru):
function isMine(documentId){
//
// Example: documentId=10
// NumWorkers= 4
// (10 % 4) = 2
// If MyWorkerInstanceNum is 2, return true, else return false.
return ((documentId % NumWorkers) === MyWorkerInstanceNum);
}
Pokračujte ve skutečném zpracování dokumentu, pouze pokud isMine() vrátí true. Dokument si tedy může „vybrat“ více pracovníků, ale ve skutečnosti jej zpracuje pouze jeden pracovník.