Một cách để làm điều đó là gán một ID số duy nhất cho mỗi tài liệu MongoDB của bạn và gán một định danh số duy nhất cho mỗi công nhân node.js của bạn.
Ví dụ:có một env var được gọi là NUM_WORKERS, sau đó trong mô-đun node.js của bạn:
var NumWorkers = process.env.NUM_WORKERS || 1;
Sau đó, bạn cần chỉ định một id số phiên bản liền kề, duy nhất (trong phạm vi 0 đến NumWorkers-1) cho từng công nhân của mình (ví dụ:thông qua tham số dòng lệnh được quy trình node.js của bạn đọc khi nó khởi chạy). Bạn có thể lưu trữ nó trong một biến có tên MyWorkerInstanceNum.
Khi bạn chọn một tài liệu từ MongoDB, hãy gọi hàm sau (chuyển documentId duy nhất của tài liệu làm tham số):
function isMine(documentId){
//
// Example: documentId=10
// NumWorkers= 4
// (10 % 4) = 2
// If MyWorkerInstanceNum is 2, return true, else return false.
return ((documentId % NumWorkers) === MyWorkerInstanceNum);
}
Chỉ tiếp tục thực sự xử lý tài liệu nếu isMine () trả về true Vì vậy, nhiều nhân viên có thể "chọn" một tài liệu, nhưng chỉ một nhân viên thực sự xử lý nó.