2

Проблема: Функция doSomething() вызывается дважды (по каждому экземпляру виртуальной машины VM).Как предотвратить множественную реакцию экземпляров виртуальных виртуальных машин Google для одного события из базы данных Firebase?

Как я могу реагировать на каждое событие только одним экземпляром виртуальной машины?

Node.js сценарий на облачную платформу Google:

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); 
    }); 
}; 
+0

Простейшим решением является использование очереди firebase, которая охватывает этот и многие другие сценарии: https://github.com/firebase/firebase-queue –

ответ

1

firebase-queue решает проблему, так как @ комментарий Франк указал.

Несколько рабочих очередей могут быть инициализированы на нескольких машинах и Firebase-Queue гарантирует, что только один работник обрабатывает одну задачу очереди за один раз.