Guía

Eventos y cola

Eventos dentro de un proceso, mensajes en cola y workers CLI.

Eventos para reacciones dentro del mismo proceso

Usa EventDispatcherInterface cuando una acción de la aplicación necesite notificar listeners en el mismo runtime.

example.php
use Lemonade\Framework\Event\EventDispatcherInterface;

final class PublishArticle
{
    public function __construct(
        private readonly EventDispatcherInterface $events,
    ) {}

    public function handle(int $articleId): void
    {
        $this->events->dispatch(new ArticlePublishedEvent($articleId));
    }
}

Queue messages para trabajo posterior

Usa QueueBusInterface cuando el trabajo pueda continuar fuera del request actual. Mantén las queue messages pequeñas y explícitas.

example.php
$this->queue->dispatch(
    message: new PublishArticleMessage($articleId),
    transport: 'database',
    queue: 'default',
    delaySeconds: 0,
);

Ejecuta workers desde la CLI

El trabajo con queue workers pertenece a la CLI. Usa los commands del framework para instalar el storage y ejecutar workers sobre el transporte elegido.

example.php
vendor/bin/lemonade queue:install
vendor/bin/lemonade queue:work default database