firebase 队列 - 重试不起作用?
firebase queue - retries are not working?
正在尝试弄清楚如何使重试起作用。
这是我的 FB 队列的样子:
{
"specs" : {
"default_spec" : {
"retries" : 3,
"timeout" : 60000
}
},
"tasks" : {
}
}
这就是我测试重试是否有效的方式:
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 个任务。
问题是,我怎样才能让重试工作。
值得一提的是,这是我看完后所做的 documentation
您的 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);
正在尝试弄清楚如何使重试起作用。
这是我的 FB 队列的样子:
{
"specs" : {
"default_spec" : {
"retries" : 3,
"timeout" : 60000
}
},
"tasks" : {
}
}
这就是我测试重试是否有效的方式:
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 个任务。
问题是,我怎样才能让重试工作。 值得一提的是,这是我看完后所做的 documentation
您的 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);