当前位置:  开发笔记 > 编程语言 > 正文

如何使作业失败并使其跳过Laravel队列中的下一次尝试?

如何解决《如何使作业失败并使其跳过Laravel队列中的下一次尝试?》经验,为你挑选了1个好方法。

我正在写一个简单的队列。

namespace App\Jobs;

use App\SomeMessageSender;

class MessageJob extends Job
{
    protected $to;
    protected $text;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($to, $text)
    {
        $this->to = $to;
        $this->text = $text;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle(SomeMessageSender $sender)
    {
    if ($sender->paramsAreValid($this->to, $this->text) {
            $sender->sendMessage($this->to, $this->text);
        }
    else {
        // Fail without being attempted any further
            throw new Exception ('The message params are not valid');
        }
    }
}

如果参数无效,则上面的代码将引发异常,从而导致作业失败,但是如果仍有尝试,则将再次尝试。相反,我想强迫它立即失败,并且再也不会尝试

我怎样才能做到这一点?



1> sisve..:

使用InteractsWithQueue特性,并delete()在要删除作业或fail($exception = null)要使其失败时调用。作业失败意味着它将被删除,登录到failed_jobs表中,并触发JobFailed事件。

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有