Руководство

События и очередь

События внутри одного процесса, сообщения в очереди и CLI workers.

События для реакций в одном процессе

Используйте EventDispatcherInterface, когда одно действие приложения должно уведомить listeners в том же 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 для последующей работы

Используйте QueueBusInterface, когда работа может продолжаться вне текущего request. Queue message держите простой и явной.

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

Запускайте workers из CLI

Работа queue workers относится к CLI. Используйте framework commands для установки storage и запуска workers на выбранном transport.

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