Команда make:message
Команда make:message создаёт класс сообщения
для компонента Symfony Messenger. Сообщение - это
обычный PHP-класс с данными, который можно
отправить в очередь и обработать асинхронно
с помощью обработчика. Команда принимает имя
класса сообщения и генерирует файл в каталоге
src/Message.
Синтаксис
php bin/console make:message [name]
Параметр name задаёт имя создаваемого класса
сообщения. Если его не указать, команда спросит
имя в интерактивном режиме.
Пример
Давайте создадим класс сообщения SendEmailMessage:
php bin/console make:message SendEmailMessage
В результате команда создаст файл сообщения:
<?php
namespace App\Message;
class SendEmailMessage
{
private string $email;
public function __construct(string $email)
{
$this->email = $email;
}
public function getEmail(): string
{
return $this->email;
}
}
?>
Команда также предложит создать обработчик для этого сообщения.
Пример
Давайте создадим сообщение с несколькими полями:
php bin/console make:message NotifyUserMessage
Результат создания класса сообщения с полями:
<?php
namespace App\Message;
class NotifyUserMessage
{
private int $userId;
private string $text;
public function __construct(int $userId, string $text)
{
$this->userId = $userId;
$this->text = $text;
}
public function getUserId(): int
{
return $this->userId;
}
public function getText(): string
{
return $this->text;
}
}
?>
Пример
Давайте отправим созданное сообщение из контроллера:
<?php
namespace App\Controller;
use App\Message\NotifyUserMessage;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Messenger\MessageBusInterface;
use Symfony\Component\Routing\Attribute\Route;
class MessageController extends AbstractController
{
#[Route('/notify', name: 'message_notify')]
public function notify(MessageBusInterface $bus): Response
{
$bus->dispatch(new NotifyUserMessage(1, 'hello'));
return new Response('message sent');
}
}
?>
Результат выполнения кода:
message sent
Смотрите также
-
команда
make:messenger-middleware,
которая создаёт middleware для Messenger -
команда
messenger:consume,
которая запускает обработку сообщений -
команда
debug:messenger,
которая показывает обработчики сообщений -
команда
messenger:stats,
которая выводит статистику по транспортам