Задать вопрос
Bandicoot
@Bandicoot
Вась-программист

Что я делаю не так с Symfony Messenger?

Итак, решаю задачу по отправке email-сообщений. По-хорошему это нужно делать асинхронно, что я и пытаюсь настроить. Но для начала я хочу проверить работоспособность кода, поэтому просто пишу текст в файл.

Сделал все по документации: https://symfony.com/doc/current/messenger.html
В качестве транспорта пробовал как Redis, так и БД

Класс сообщения:
namespace App\Message;

/**
 * Class EmailNotification
 * @package App\Message
 */
final class EmailNotification
{
     private $email;
     private $flightId;

     public function __construct(string $email, int $flightId)
     {
         $this->email       = $email;
         $this->flightId    = $flightId;
     }

    public function getEmail(): string
    {
        return $this->email;
    }

    public function getFlightId(): int
    {
        return $this->flightId;
    }
}


Класс обработчика, в котором я пытаюсь заставить код выполнить хоть какую-то полезную работу:
namespace App\MessageHandler;

use App\Message\EmailNotification;
use Symfony\Component\Messenger\Handler\MessageHandlerInterface;

final class EmailNotificationHandler implements MessageHandlerInterface
{
    /**
     * @param EmailNotification $message
     */
    public function __invoke(EmailNotification $message)
    {
        $email      = $message->getEmail();
        $flightId   = $message->getFlightId();

        $mes = "Flight $flightId was cancelled - $email";

        $testFile = __DIR__ .'/../../var/log/test.txt';

        file_put_contents($testFile, $mes);
    }
}


Сам код вызова:
$emails = $this->getEmails($flightId);

foreach ($emails as $email) {
    $bus->dispatch(new EmailNotification($email, $flightId));
}


Проблема в том, что в файлик, который упомянут в коде обработчика, ничего не пишется. Отправление сообщений само по себе работает - как в таблице БД, так и в Рэдисе создаются соответствующие записи.

Помогите разобраться, что я делаю не так? Никаких ошибок пока не увидел, файл доступен для записи.
  • Вопрос задан
  • 787 просмотров
Подписаться 2 Простой 9 комментариев
Решения вопроса 1
Bandicoot
@Bandicoot Автор вопроса
Вась-программист
Воркеры
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы