如何手动进行队列重试或者怎么确定队列成功了

用的是laraval6 文档写的太模糊
现在写个回调队列,需求是请求某个地址带参数,如果请求返回为字符串success 则表示回调成功,如果不是success或者错误,则再次尝试请求,直到请求五次
文档并没有给出如何进行错误判断进行重试的 我按照该篇:问答:队列如何判断任务是成功还是失败了
写了一份代码
是否是正确的写法

class NotifyFailGetOrder implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    protected $notify_url='';
    protected $data=[];
    protected $token='';//加签密钥
    public $tries = 4;//重试4次,加第一次 共5次
    public $backoff = 10;//十秒一次
    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($notify_url,$data,$token)
    {
        //
        $this->notify_url = $notify_url;
        $this->data = $data;
        $this->token = $token;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        $notify_url = $this->notify_url;
        $data = $this->data;
        $token = $this->token;
        try{
                $result = send_notify_url($notify_url,$data,$token);//请求函数
                if($result != 'success'){
                    //走这里没有抛出异常,则会完成该次队列
                }else{
                    //走这里会重试 
                    throw new \Exception (' 回调异常!'); 
                }

        }catch(\Exception $e){
         //走这里会重试
            throw new \Exception($e);
        }
    }
}
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 8

$tries = 4;//重试4次,加第一次 共5次 (这个是总共执行4次)

你可以不用抛出异常 可以使用$this->release($delay)

至于异常是怎么重试的 你可以看一下这个 博客:Laravel Queue 消費者源码分析

1年前 评论
一梦换须臾 (楼主) 1年前
一梦换须臾 (楼主) 1年前
cccdz (作者) 1年前
cccdz (作者) 1年前
一梦换须臾 (楼主) 1年前
cccdz (作者) 1年前

可以写日志看;在开始、结束的地方,记录下

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!