diff --git a/src/queue/src/ConfigProvider.php b/src/queue/src/ConfigProvider.php index bcc60d3c..2c095e21 100644 --- a/src/queue/src/ConfigProvider.php +++ b/src/queue/src/ConfigProvider.php @@ -31,7 +31,7 @@ public function __invoke(): array return [ 'dependencies' => [ - FactoryContract::class => QueueManager::class, + FactoryContract::class => QueueManagerFactory::class, Queue::class => fn (ContainerInterface $container) => $container->get(FactoryContract::class)->connection(), FailedJobProviderInterface::class => FailedJobProviderFactory::class, Listener::class => fn (ContainerInterface $container) => new Listener($this->getBasePath($container)), diff --git a/src/queue/src/QueueManagerFactory.php b/src/queue/src/QueueManagerFactory.php new file mode 100644 index 00000000..ec954db5 --- /dev/null +++ b/src/queue/src/QueueManagerFactory.php @@ -0,0 +1,34 @@ +has(ExceptionHandler::class)) { + return $manager; + } + + $connectors = ['coroutine', 'defer']; + $reportHandler = fn (Throwable $e) => $container->get(ExceptionHandler::class)->report($e); + foreach ($connectors as $connector) { + try { + $manager->connection($connector) // @phpstan-ignore-line + ->setExceptionCallback($reportHandler); + } catch (InvalidArgumentException) { + // Ignore exception when the connector is not configured. + } + } + + return $manager; + } +}