Node.js 如何防止Google云VM实例对Firebase数据库中的一个事件做出多个反应?
问题:doSomething()函数被调用两次(由每个运行的VM实例调用) 如何仅通过一个VM实例对每个事件作出反应 Google云平台上的Node.js脚本: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
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队列,它涵盖了此场景和许多其他场景: