Руководство
События и очередь
События внутри одного процесса, сообщения в очереди и CLI workers.
События для реакций в одном процессе
Используйте EventDispatcherInterface, когда одно действие приложения должно уведомить listeners в том же runtime.
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 держите простой и явной.
$this->queue->dispatch(
message: new PublishArticleMessage($articleId),
transport: 'database',
queue: 'default',
delaySeconds: 0,
);Запускайте workers из CLI
Работа queue workers относится к CLI. Используйте framework commands для установки storage и запуска workers на выбранном transport.
vendor/bin/lemonade queue:install
vendor/bin/lemonade queue:work default database