Firebase队列 - 工作人员之间的阻塞和非阻塞

时间:2016-10-03 23:56:30

标签: node.js firebase firebase-realtime-database firebase-queue

以下是标准代码,将任务添加到队列,然后工作池将处理任务。 我感到困惑的是队列中有多个工作人员意味着什么,因为我不相信这段代码会启动多个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控制阻止/非阻止工作队列?

0 个答案:

没有答案