检查队列返回状态

时间:2019-02-13 15:56:47

标签: php laravel laravel-4

我正在使用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语句。

1 个答案:

答案 0 :(得分:0)

您对队列的使用情况不正确。

队列只能运行任务,您可以将它们的结果存储到任何需要的地方(例如DB或LogFiles,Redis ...)

队列的正确用法适用于

您不想通过您的主要代码(当前)运行它们,因为您没有直接访问队列结果的权限(考虑到您的队列可能在此时停止(针对某些错误修复实施, ),否则您的工作只会在午夜运行,这取决于您的业务逻辑)

您正在使用外部服务(例如:发送电子邮件, 发送通知...),结果对您来说并不重要 当前代码

您要在主要流程之前回答外部请求

这里有队列以确保:

如果要重试一整天,他们将执行您请求的过程(例如发送电子邮件) 做到这一点(发送电子邮件)

,或者您可以将它们标记为失败的工作(由于特定次数的重试后由于网络的密件副本或代码问题而失败),将它们存储在某个位置,并修复了错误之后,可以重试它们。他们不会丢失任何数据,除非它们从结果中得出真确