firebase队列 – 重试不起作用?

试图找出如何使重试工作。

这是我的FB队列的外观:

{ "specs" : { "default_spec" : { "retries" : 3, "timeout" : 60000 } }, "tasks" : { } } 

这就是我正在testing如果重试工作:

 const queue = new Queue(getFirebaseRef(),{'numWorkers': 10} , function (data, progress, resolve, reject) { console.log('processing queue message:' + JSON.stringify(data)); progress(50); setTimeout(()=>{ reject(new Error("error while processing blabla")); },2000); }); 

所以当我将新任务推送到队列中时,这是我的工作人员处理后的样子:

 { "-KcsTIDBAq1S_fdiwsv6" : { "_error_details" : { "attempts" : 1, "error" : "error while processing blabla", "error_stack" : "Error: error while processing blabla\n at Timeout.setTimeout ..., "previous_state" : "in_progress" }, "_progress" : 50, "_state" : "error", "_state_changed" : 1487089675432, "body" : { "testing" : "this_is_a_test_task" } } } 

所以我预计企图是3,我也没有迹象表明3个任务处理的服务。

问题是,我怎样才能重试工作。 值得一提的是这是我阅读文档后所做的

你的default_spec目前是无用的。 您需要在队列选项中添加第二行:

 { 'numWorkers': 10, 'specId': "default_spec" } 

请阅读下面的firebase-queue问题:

https://github.com/firebase/firebase-queue/issues/106#issuecomment-279975546

最终它是@Caerbannog写的,并在代码中添加default_spec的组合,而不是直接将其插入到Firebase控制台中。

所以回顾一下这些是我的改变:

 var options = { 'specId': "default_spec", 'numWorkers': 10 }; 

 var queueRef = getFirebaseRef(); var specs = { "default_spec": { "start_state": null, "in_progress_state": "in_progress", "finished_state": null, "error_state": "error", "timeout": 60000, "retries": 50 } }; queueRef.child('specs').set(specs);