// Job
class SendEmailJob implements ShouldQueue {
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public function __construct(public User $user) {}
public function handle(Mailer $mailer): void {
$mailer->send($this->user->email, new WelcomeEmail());
}
public function failed(Throwable $e): void {
Log::error('Email failed', ['user' => $this->user->id]);
}
}
// Отправка в очередь
SendEmailJob::dispatch($user);
SendEmailJob::dispatch($user)->onQueue('emails')->delay(now()->addMinutes(5));Драйверы: database, Redis, SQS, Beanstalkd. Воркер: php artisan queue:work --queue=emails