Laravel8队列的fail()方法不解之处
环境:Laravel8 + PHP7.4 + Ubuntu
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Http;
class PolicyOrder implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $params;
/**
* 任务尝试次数
*
* @var int
*/
public $tries = 5;
/**
* 任务超时设置(0:不限制)
*
* @var int
*/
public $timeout = 0;
/**
* PolicyOrder constructor.
* @param $params
*/
public function __construct($params)
{
$this->params = $params;
}
/**
* @throws \Exception
*/
public function handle()
{
try {
$this->fail(new \Exception('error'));
} catch (\Exception $e) {
throw $e; //抛异常,可以重新放入队列
}
}
}
我简单模拟代码,使用$this->fail(new \Exception(‘error’));
使用命令启动队列:
sudo php artisan queue:work –queue=policyOrderQueue
然后观察客户端输出:
通过发现有3条输出,第一条执行中,这个我懂,第二条失败,是的我调用fail方法了,关键第三条又成功了?这个是什么?
通过看fail源码【Delete the job…..】:
/**
* Delete the job, call the "failed" method, and raise the failed job event.
*
* @param \Throwable|null $e
* @return void
*/
public function fail($e = null);
所以我猜第三条记录是不是删除队列的意思?各位有没有懂的
processing : 开始执行
failed/success:队列执行结果
proccessed: 执行完成(不管是否成功执行队列,又或是执行成功就没有这个了)