Návod

Události a fronta

Události v rámci jednoho procesu, zprávy ve frontě a CLI workeři.

Události pro reakce v jednom procesu

Používej EventDispatcherInterface, když jedna akce aplikace potřebuje upozornit listenery ve stejném 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));
    }
}

Zprávy ve frontě pro navazující práci

Používej QueueBusInterface, když práce může pokračovat mimo aktuální request. Queue message drž jednoduchou a explicitní.

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

Spouštěj workery z CLI

Práce s queue workery patří do CLI. Používej frameworkové commandy pro instalaci úložiště a spuštění workerů nad zvoleným transportem.

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