РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1247 of 1361 menu

Команда messenger:failed:retry

Команда messenger:failed:retry берёт сообщения из очереди failed и повторно отправляет их в шину Messenger для обработки. Первым параметром можно передать ID конкретного сообщения. Без параметров команда работает в интерактивном режиме и предлагает выбрать сообщения из списка.

Команда полезна, когда обработчик временно не работал: после исправления ошибки сбойные сообщения можно вернуть в обработку без потери данных.

Синтаксис

php bin/console messenger:failed:retry [id] [options]

Пример

Давайте сначала создадим сообщение и его обработчик. Класс сообщения:

<?php namespace AppMessage; class ArticleMessage { public function __construct( public string $text, ) { } } ?>

Обработчик сообщения:

<?php namespace AppMessageHandler; use AppMessageArticleMessage; use SymfonyComponentMessengerAttributeAsMessageHandler; #[AsMessageHandler] class ArticleMessageHandler { public function __invoke(ArticleMessage $message): void { if ($message->text === 'fail') { throw new RuntimeException('handler failed'); } echo $message->text . PHP_EOL; } } ?>

Отправим сообщение с текстом 'fail', чтобы обработчик выбросил исключение и сообщение попало в очередь failed:

php bin/console messenger:dispatch 'AppMessageArticleMessage' '{"text":"fail"}'

Теперь посмотрим список сбойных сообщений:

php bin/console messenger:failed:show

Результат выполнения команды:

------------------------ ---------------------- ---------- ---------------------- Failed messages for Message Id Class Error ------------------------ ---------------------- ---------- ---------------------- 1 1234abcd-... ArticleMessage handler failed ------------------------ ---------------------- ---------- ----------------------

Пример

Давайте исправим обработчик, чтобы он не выбрасывал исключение для нашего сообщения:

<?php namespace AppMessageHandler; use AppMessageArticleMessage; use SymfonyComponentMessengerAttributeAsMessageHandler; #[AsMessageHandler] class ArticleMessageHandler { public function __invoke(ArticleMessage $message): void { echo $message->text . PHP_EOL; } } ?>

Теперь повторим обработку сбойного сообщения по его ID:

php bin/console messenger:failed:retry 1

Результат выполнения команды:

"fail"

Пример

Давайте запустим команду без параметров, чтобы выбрать сбойные сообщения в интерактивном режиме:

php bin/console messenger:failed:retry

Команда покажет список сообщений и предложит выбрать, какие из них повторить. После выбора Symfony спросит подтверждение и выполнит повторную обработку.

Для пропуска всех сообщений, кроме первого, используйте опцию --force, чтобы не отвечать на вопросы интерактивно:

php bin/console messenger:failed:retry --force

Смотрите также

  • команда messenger:failed:show,
    которая показывает список сбойных сообщений
  • команда messenger:consume,
    которая запускает обработку сообщений из очереди
  • команда messenger:stop-workers,
    которая останавливает всех воркеров Messenger
  • команда messenger:stats,
    которая показывает статистику по транспортам
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить