vendor/symfony/messenger/EventListener/StopWorkerOnCustomStopExceptionListener.php line 43
<?php/** This file is part of the Symfony package.** (c) Fabien Potencier <fabien@symfony.com>** For the full copyright and license information, please view the LICENSE* file that was distributed with this source code.*/namespace Symfony\Component\Messenger\EventListener;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Symfony\Component\Messenger\Event\WorkerMessageFailedEvent;use Symfony\Component\Messenger\Event\WorkerRunningEvent;use Symfony\Component\Messenger\Exception\HandlerFailedException;use Symfony\Component\Messenger\Exception\StopWorkerExceptionInterface;/*** @author Grégoire Pineau <lyrixx@lyrixx.info>*/class StopWorkerOnCustomStopExceptionListener implements EventSubscriberInterface{private bool $stop = false;public function onMessageFailed(WorkerMessageFailedEvent $event): void{$th = $event->getThrowable();if ($th instanceof StopWorkerExceptionInterface) {$this->stop = true;}if ($th instanceof HandlerFailedException) {foreach ($th->getNestedExceptions() as $e) {if ($e instanceof StopWorkerExceptionInterface) {$this->stop = true;break;}}}}public function onWorkerRunning(WorkerRunningEvent $event): void{if ($this->stop) {$event->getWorker()->stop();}}public static function getSubscribedEvents(): array{return [WorkerMessageFailedEvent::class => 'onMessageFailed',WorkerRunningEvent::class => 'onWorkerRunning',];}}