Как запустить Job? Как обработать ошибку в Job?

Ответ
// Запуск
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);
    }
}
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.