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

Класс StopWorkerException

Класс StopWorkerException находится в пространстве имён Symfony\Component\Messenger\Exception и используется для остановки воркера изнутри обработчика сообщения. Когда исключение выбрасывается в методе __invoke обработчика, воркер завершает обработку текущего сообщения и корректно останавливается. Это удобно, когда нужно прервать бесконечный цикл воркера по условию, например при достижении лимита обработанных сообщений или при появлении специального сигнального сообщения.

Синтаксис

<?php use Symfony\Component\Messenger\Exception\StopWorkerException; throw new StopWorkerException('message'); ?>

Пример

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

<?php namespace App\MessageHandler; use App\Message\ArticleMessage; use Symfony\Component\Messenger\Attribute\AsMessageHandler; use Symfony\Component\Messenger\Exception\StopWorkerException; #[AsMessageHandler] class ArticleHandler { public function __invoke(ArticleMessage $message): void { echo $message->getText(); throw new StopWorkerException('worker stopped'); } } ?>

Результат выполнения кода при обработке сообщения с текстом 'abcde':

"abcde"

Пример

Давайте остановим воркер после обработки десяти сообщений:

<?php namespace App\MessageHandler; use App\Message\ArticleMessage; use Symfony\Component\Messenger\Attribute\AsMessageHandler; use Symfony\Component\Messenger\Exception\StopWorkerException; #[AsMessageHandler] class ArticleHandler { private int $count = 0; public function __invoke(ArticleMessage $message): void { $this->count++; echo $message->getText(); if ($this->count >= 10) { throw new StopWorkerException('limit reached'); } } } ?>

Результат выполнения кода после обработки десятого сообщения:

"worker stopped after 10 messages"

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

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