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);