I have a queued job in Laravel that fails from time to time because of an external API failing due to high load. The problem is that my choices appear to be to have the Lara
What you can do is something like this:
// app/Jobs/ExampleJob.php
namespace App\Jobs;
class ExampleJob extends Job
{
use \Illuminate\Queue\InteractsWithQueue;
public function handle()
{
try {
// Do stuff that might fail
} catch(AnException $e) {
// Example where you might want to retry
if ($this->attempts() < 3) {
$delayInSeconds = 5 * 60;
$this->release($delayInSeconds);
}
} catch(AnotherException $e) {
// Example where you don't want to retry
$this->delete();
}
}
}
Please note that you do not have to do this with exceptions, you can also just check the result from your actions and decide from there.