GlosarioArquitectura

¿Qué es Listener?

Los Listeners en Laravel son clases que contienen la logica que se ejecuta en respuesta a un evento especifico, como enviar un email cuando un usuario se registra o actualizar el inventario al crear un pedido.

Listeners

Los Listeners contienen la logica que se ejecuta cuando se despacha un evento. Un solo evento puede tener multiples listeners que se ejecutan secuencialmente.

Crear un listener

php artisan make:listener SendWelcomeEmail --event=UserRegistered
class SendWelcomeEmail implements ShouldQueue
{
    public function handle(UserRegistered $event): void
    {
        Mail::to($event->user->email)->send(
            new WelcomeMail($event->user)
        );
    }

    public function failed(UserRegistered $event, Throwable $exception): void
    {
        Log::error('Error enviando email de bienvenida', [
            'user_id' => $event->user->id,
            'error' => $exception->getMessage(),
        ]);
    }
}

Listeners en cola

Implementando ShouldQueue, el listener se procesa de forma asincrona en una cola de trabajo, sin bloquear la peticion HTTP.

class UpdateSearchIndex implements ShouldQueue
{
    public $queue = 'indexing';
    public $delay = 60; // segundos

    public function handle(PostPublished $event): void
    {
        SearchIndex::update($event->post);
    }

    public function shouldQueue(PostPublished $event): bool
    {
        return $event->post->published;
    }
}

Los listeners permiten separar la responsabilidad de las acciones secundarias, manteniendo la logica principal limpia y enfocada. Combinados con colas, mejoran significativamente el rendimiento de la aplicacion.