// Запуск
SendEmailJob::dispatch($user); // async
SendEmailJob::dispatchSync($user); // sync (для тестов)
SendEmailJob::dispatch($user)->afterCommit(); // после commit транзакции
// Обработка ошибок
class ProcessPayment implements ShouldQueue {
public int $tries = 3; // макс. попыток
public int $backoff = 60; // секунд между попытками
public int $timeout = 120; // таймаут выполнения
public int $maxExceptions = 2; // макс. исключений
public function handle(): void { /* ... */ }
public function failed(Throwable $e): void {
// Вызывается после исчерпания попыток
Notification::send($admin, new JobFailed($e));
}
public function retryUntil(): DateTime {
return now()->addHours(1);
}
}