Laravel Horizon
Horizon es un panel de administración para colas basadas en Redis. Ofrece métricas, historial de jobs fallidos, reintentos y supervisión de workers. Requiere el driver redis para las colas.
Instalación:
composer require laravel/horizon
php artisan horizon:install
Esto publica config/horizon.php y añade la ruta del panel (habitualmente /horizon). El panel se protege en producción; configura qué usuarios pueden acceder en HorizonServiceProvider.
Para arrancar los workers con Horizon:
php artisan horizon
Horizon gestiona múltiples workers y procesos según la configuración en config/horizon.php.
Job Batching
El Job Batching permite encolar un conjunto de jobs y ejecutar lógica cuando todo el lote termine o cuando falle algún job. Útil para operaciones masivas (exportaciones, notificaciones en lote).
use Illuminate\Support\Facades\Bus;
use App\Jobs\ProcessItem;
$batch = Bus::batch([
new ProcessItem(1),
new ProcessItem(2),
new ProcessItem(3),
])->then(function (Batch $batch) {
// Se ejecuta cuando todos los jobs terminan correctamente
})->catch(function (Batch $batch, Throwable $e) {
// Se ejecuta si falla algún job
})->dispatch();
Puedes consultar el progreso:
$batch->progress(); // Porcentaje completado
$batch->finished(); // Si ha terminado
Los jobs del batch deben usar el trait Batchable para poder comunicarse con el lote (por ejemplo, cancelar el batch si procede).
Alan Sastre
Ingeniero de Software y formador, CEO en CertiDevs
Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, Laravel es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.
Más tutoriales de Laravel
Explora más contenido relacionado con Laravel y continúa aprendiendo con nuestros tutoriales gratuitos.
Aprendizajes de esta lección
Usar Horizon para monitorear colas Redis y Job Batching para procesar lotes de jobs.
Cursos que incluyen esta lección
Esta lección forma parte de los siguientes cursos estructurados con rutas de aprendizaje