Laravel 5.5处理失败的作业

时间:2019-04-17 14:37:29

标签: laravel laravel-5

我正在尝试弄清如何处理失败的作业。所以在我的Job课上,我基本上是这样的


public function handle()
{
    try {
        $someService = new SomeService($);
        $success = $someService->makeApiRequest();

        if($success) {
            //do something
        } else {
            //trigger failed
        }
    } catch (\Exception $e) {
        $this->failed($e);
    }
}

public function failed(Exception $exception)
{
    //Log information
}

这是在调用一个发出API请求的Service类。此类根据API调用是否成功返回true或false。

目前,我只是让API方法返回false。这应该意味着该作业已失败。但是,不会调用失败的函数,就Laravel而言,该作业已得​​到处理。

如何在看到没有异常的情况下手动触发失败的功能?

谢谢

1 个答案:

答案 0 :(得分:4)

由于您正在使用Jobs,因此不会捕获到异常。该框架将为您完成此任务,并将作业标记为失败。

所以您的handle方法应该是

public function handle()
{
    $someService = new SomeService($);
    $success = $someService->makeApiRequest();

    if($success) {
       //do something
    } else {
       trow new Exception('error message goes here');
    }
}