【问题标题】:Laravel 5.5 handling failed jobsLaravel 5.5 处理失败的作业
【发布时间】:2019-04-17 14:37:29
【问题描述】:

我想弄清楚如何处理失败的工作。所以在我的 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 请求的服务类。该类根据 API 调用是否成功返回 true 或 false。

目前,我只是让 API 方法返回 false。这应该意味着作业失败。但是,失败的函数并没有被调用,就 Laravel 而言,作业被处理了。

如果我没有异常,如何手动触发失败的函数?

谢谢

【问题讨论】:

  • 您是将作业推送到队列还是同步运行?

标签: laravel laravel-5


【解决方案1】:

由于您使用的是 Jobs,因此您不会捕获异常。框架将为您执行此操作并将作业标记为失败。

所以你的handle 方法应该是

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

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

【讨论】:

    猜你喜欢
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 2014-11-19
    • 2012-07-18
    • 1970-01-01
    • 2018-11-01
    相关资源
    最近更新 更多