以下是标准代码,将任务添加到队列,然后工作池将处理任务。 我感到困惑的是队列中有多个工作人员意味着什么,因为我不相信这段代码会启动多个node.js进程?
var Queue = require('firebase-queue');
var firebase = require('firebase');
firebase.initializeApp({
// propriety data
});
var promise = firebase.auth().signInWithEmailAndPassword(process.env.EMAIL, process.env.PASSWORD);
promise.then(function () {
return createQueue();
}, function (error) {
console.error(error);
});
var queue;
function createQueue() {
var db = firebase.database();
var ref = db.ref('quote-request-queue');
var tasks = db.ref('quote-request-queue/tasks');
tasks.push({'foo': 'bar'});
tasks.push({'foo': 'bar'});
tasks.push({'foo': 'bar'});
const opts = {
};
queue = new Queue(ref, opts, function (data, progress, resolve, reject) {
// Read and process task data
console.log(data);
// Do some work
progress(50);
// Finish the task asynchronously
setTimeout(function () {
resolve();
}, 100);
});
console.log('worker count:', queue.getWorkerCount());
}
我的问题是 - 是否有必要在另一个工作人员处理队列中的下一个项目之前调用resolve()?
我想了解如何让工人互相阻止(为了达到数据库原子性)以及让工人在不同的任务上并行工作。 (如果处理函数中发生I / O,它们将并行/同时工作。)
如何使用Firebase控制阻止/非阻止工作队列?