Node.js 如何防止Google云VM实例对Firebase数据库中的一个事件做出多个反应?

Node.js 如何防止Google云VM实例对Firebase数据库中的一个事件做出多个反应?,node.js,firebase-realtime-database,google-compute-engine,google-cloud-platform,gcloud,Node.js,Firebase Realtime Database,Google Compute Engine,Google Cloud Platform,Gcloud,问题:doSomething()函数被调用两次(由每个运行的VM实例调用) 如何仅通过一个VM实例对每个事件作出反应 Google云平台上的Node.js脚本: function listenForNotificationRequests() { var requests = ref.child('some_node'); requests.on('child_added', function(requestSnapshot) { var request = re

问题:doSomething()函数被调用两次(由每个运行的VM实例调用)

如何仅通过一个VM实例对每个事件作出反应

Google云平台上的Node.js脚本:

function listenForNotificationRequests() {
    var requests = ref.child('some_node');
    requests.on('child_added', function(requestSnapshot) {
        var request = requestSnapshot.val();
        doSomething(  
           request.type,
           function() {
               requestSnapshot.ref.remove();
           });
    }, function(error) {
        console.error(error);
    });
};
正如@Frank的评论所指出的,解决了您的问题

可以在多台计算机上初始化多个队列工作程序,并且 Firebase队列将确保只有一个工作进程正在处理单个 一次对任务进行排队


最简单的解决方案是使用firebase队列,它涵盖了此场景和许多其他场景: