Przewodnik

Zdarzenia i kolejka

Zdarzenia w jednym procesie, wiadomości w kolejce i workery CLI.

Zdarzenia dla reakcji w tym samym procesie

Używaj EventDispatcherInterface, gdy jedna akcja aplikacji ma powiadomić listenery w tym samym 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));
    }
}

Wiadomości kolejki dla dalszej pracy

Używaj QueueBusInterface, gdy praca może być kontynuowana poza bieżącym requestem. Queue message utrzymuj prostą i jawną.

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

Uruchamiaj workery z CLI

Obsługa workerów kolejki należy do CLI. Używaj commandów frameworka do instalacji storage i uruchamiania workerów na wybranym transporcie.

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