laravel8.x 在队列中人为的终止本次任务,尝试重试 如何实现?

laravel8.x 一个需求,一个录音文件异步生成,我采用10/15/20/25/30这种频率去拉取,如果当中有拉取失败则直接抛出异常。如果最后一次也拉取失败则放弃这个任务。 但是每次拉取失败都会写入错误日志。
我想问的是laravel除了抛出异常来终止本次任务,还有没有提供什么方法 直接终止本次任务,放入队列,等待延迟下一次执行同时也不写入错误日志

class Test implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public $tries = 6;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct()
    {
    }

    /**
     * 计算重试任务前等待的秒数。
     *
     * @return array
     */
    public function backoff()
    {
        return [10, 15, 20, 25, 30];
    }

    /**
     * Execute the job.
     *
     * @return void
     * @throws \Exception
     */
    public function handle()
    {
        file_put_contents(base_path('1.txt'), date('Y-m-d H:i:s') . PHP_EOL, FILE_APPEND);
        throw new \Exception('123');
    }
}
阅读 1.9k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题