如果作业失败,它将被推回到队列。有没有办法在再次处理作业时记住作业类中的属性值?
例如:
onResponse
答案 0 :(得分:2)
如果您想在同一时刻再次重新运行失败的进程。你可以做这样的事情。
此处对象在重新运行作业时在内存中,因此数据可用。
我没有通过运行验证它,但希望它可以正常工作
class MailJob extends Job{
public $tries = 3;
public $status;
public function __construct()
{
$this->status = false; // set to false
}
/**
* Execute the job.
*/
public function handle()
{
$this->status = true;
// Assume job has failed, it went back to the Queue.
// status should be true when this job start processing again
$failed = processFailedisConfirm();
if $failed == true && $this->tries > -1 {
$this->tries = $this->tries - 1;
$this->handel();
}
}}
processFailedisConfirm的示例可能是
public function processFailedisConfirm(){
// Core Process to be done in the Job
$state = (Do Some Api Call); // Here just example, you may send email
// Or can do the core Job Process
// And depending on the Response of the
// Process return true or false
// Is Job failed or not ?
if ( $state == "200" ){
return false; // Job is not failed
} else {
return true; // Job is failed
}
过程逻辑失败与否取决于您正在进行的操作。因为我正在进行api调用,如果我得到200的响应,我的过程是成功的。 否则进程失败。 这个例子,不同api的成功响应可能与api设计师的desigend不同。