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

Транспорт failed

Транспорт failed - это специальный транспорт, который принимает сообщения, не обработанные успешно после исчерпания всех повторных попыток. Он настраивается в секции framework.messenger.transports и позволяет сохранять «проваленные» сообщения для последующего анализа или повторной обработки. По умолчанию используется транспорт doctrine, но можно указать любой другой DSN.

Синтаксис

framework: messenger: failure_transport: failed transports: failed: 'doctrine://default?queue_name=failed'

Пример

Давайте настроим транспорт failed в файле конфигурации:

framework: messenger: failure_transport: failed transports: async: '%env(MESSENGER_TRANSPORT_DSN)%' failed: 'doctrine://default?queue_name=failed' routing: App\Message\ArticleMessage: async

Теперь при неудачной обработке сообщение попадёт в очередь failed.

Пример

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

<?php namespace App\MessageHandler; use App\Message\ArticleMessage; use Symfony\Component\Messenger\Attribute\AsMessageHandler; #[AsMessageHandler] class ArticleMessageHandler { public function __invoke(ArticleMessage $message): void { throw new \RuntimeException('article not processed'); } } ?>

После запуска воркера сообщение будет помечено как неудачное и перемещено в очередь failed:

php bin/console messenger:consume async

Пример

Давайте посмотрим список неудачных сообщений в очереди failed:

php bin/console messenger:failed:show

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

1 message(s) in the failure transport. ------------------------ ------------------------ Id Class ------------------------ ------------------------ 1 App\Message\ArticleMessage

Пример

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

php bin/console messenger:failed:retry

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

Retrying message 1... "article not processed"

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

  • транспорт async,
    который обрабатывает сообщения асинхронно
  • транспорт sync,
    который обрабатывает сообщения синхронно
  • класс Worker,
    который запускает обработку сообщений из очереди
  • класс HandlerFailedException,
    которое выбрасывается при ошибке обработчика
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить