我正在使用Laravel 4.2队列功能。现在我有一个函数将对数据进行处理,然后将一些结果返回给函数。我的问题是,如何检查从队列返回的状态?
代码
控制器功能
public function delete_invoice($job, $data)
{
try {
return DB::transaction(function ()use ($job,$data) {
//Doing some process here, go to Catch if an error
});
} catch (TransactionException $e) {
return Response::json(['errors' => array_flatten($e->getErrors())], 400);
}
}
队列功能
restore()
我不确定如何根据队列返回的结果在控制器功能中进行验证。上面的代码始终执行this.http.get(this.request)
.subscribe((response)=>{
response.response.group.results.forEach(el => {
let venue = {id: el.id, name: el.venue.name};
param.push(venue);
})
this.router.navigate(['/place-list', {par: param}]);
})
,从不执行else语句。
答案 0 :(得分:0)
您对队列的使用情况不正确。
队列只能运行任务,您可以将它们的结果存储到任何需要的地方(例如DB或LogFiles,Redis ...)
队列的正确用法适用于
您不想通过您的主要代码(当前)运行它们,因为您没有直接访问队列结果的权限(考虑到您的队列可能在此时停止(针对某些错误修复实施, ),否则您的工作只会在午夜运行,这取决于您的业务逻辑)
或
您正在使用外部服务(例如:发送电子邮件, 发送通知...),结果对您来说并不重要 当前代码
或
您要在主要流程之前回答外部请求
这里有队列以确保:
如果要重试一整天,他们将执行您请求的过程(例如发送电子邮件) 做到这一点(发送电子邮件)
,或者您可以将它们标记为失败的工作(由于特定次数的重试后由于网络的密件副本或代码问题而失败),将它们存储在某个位置,并修复了错误之后,可以重试它们。他们不会丢失任何数据,除非它们从结果中得出真确