diff --git a/src/Framework/Queue/QueueInitializer.php b/src/Framework/Queue/QueueInitializer.php index 1f535581..6a3c0b8d 100644 --- a/src/Framework/Queue/QueueInitializer.php +++ b/src/Framework/Queue/QueueInitializer.php @@ -5,17 +5,20 @@ declare(strict_types=1); namespace App\Framework\Queue; use App\Framework\Core\PathProvider; +use App\Framework\DI\Container; use App\Framework\DI\Initializer; use App\Framework\Logging\Logger; use App\Framework\Logging\ValueObjects\LogContext; use App\Framework\Queue\Exceptions\RedisExtensionNotLoadedException; use App\Framework\Redis\RedisConfig; use App\Framework\Redis\RedisConnection; +use App\Framework\Redis\RedisConnectionPool; final readonly class QueueInitializer { public function __construct( - private PathProvider $pathProvider + private PathProvider $pathProvider, + private Container $container ) { } @@ -28,14 +31,25 @@ final readonly class QueueInitializer throw RedisExtensionNotLoadedException::notLoaded(); } - $redisConfig = new RedisConfig( - host: 'redis', - port: 6379, - database: 2 // Use DB 2 for queue - ); - $redisConnection = new RedisConnection($redisConfig, 'queue'); + // Try to use Redis connection pool if available, otherwise create direct connection + $redisConnection = null; + if ($this->container->has(RedisConnectionPool::class)) { + $pool = $this->container->get(RedisConnectionPool::class); + $redisConnection = $pool->getQueueConnection(); + } else { + // Fallback to direct connection creation + $redisConfig = new RedisConfig( + host: 'redis', + port: 6379, + database: 2 // Use DB 2 for queue + ); + $redisConnection = new RedisConnection($redisConfig, 'queue'); + } - return new RedisQueue($redisConnection, 'commands'); + return new RedisQueue( + connection: $redisConnection, + queueName: 'commands' + ); } catch (\Throwable $e) { // Fallback to file queue if Redis is not available $logger->info("Using file queue (Redis not available)", LogContext::withData([