Guida

Eventi e queue

Eventi nello stesso processo, messaggi in queue e worker CLI.

Eventi per reazioni nello stesso processo

Usa EventDispatcherInterface quando un’azione dell’applicazione deve notificare listener nello stesso 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 message per il lavoro successivo

Usa QueueBusInterface quando il lavoro può continuare fuori dalla request corrente. Mantieni le queue message piccole ed esplicite.

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

Esegui i worker dalla CLI

Il lavoro dei queue worker appartiene alla CLI. Usa i command del framework per installare lo storage ed eseguire i worker sul transport scelto.

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