Guide

Événements et queue

Événements dans un même processus, messages en queue et workers CLI.

Événements pour les réactions dans le même processus

Utilisez EventDispatcherInterface lorsqu’une action applicative doit avertir des listeners dans le même 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 pour le travail différé

Utilisez QueueBusInterface lorsque le travail peut continuer hors de la request actuelle. Gardez les queue messages petits et explicites.

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

Exécuter les workers depuis la CLI

Le travail des queue workers appartient à la CLI. Utilisez les commandes du framework pour installer le storage et exécuter les workers sur le transport choisi.

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