From edbef4c0c15cfbd0576baa759bb40f3f4b183807 Mon Sep 17 00:00:00 2001 From: Evgeniy Ochkovskyi Date: Wed, 5 Jul 2023 15:06:20 +0300 Subject: [PATCH 1/4] Add timeout --- src/Queue/Connection/ConfigFactory.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/Queue/Connection/ConfigFactory.php b/src/Queue/Connection/ConfigFactory.php index f3ecd409..ded5ca19 100644 --- a/src/Queue/Connection/ConfigFactory.php +++ b/src/Queue/Connection/ConfigFactory.php @@ -38,6 +38,7 @@ public static function make(array $config = []): AMQPConnectionConfig self::getHostFromConfig($connectionConfig, $config); self::getHeartbeatFromConfig($connectionConfig, $config); self::getNetworkProtocolFromConfig($connectionConfig, $config); + self::getReadWriteTimeoutFromConfig($connectionConfig, $config); }); } @@ -99,4 +100,18 @@ protected static function getNetworkProtocolFromConfig(AMQPConnectionConfig $con $connectionConfig->setNetworkProtocol($networkProtocol); } } + + protected static function getReadWriteTimeoutFromConfig(AMQPConnectionConfig $connectionConfig, array $config): void + { + $readTimeout = Arr::get($config, self::CONFIG_OPTIONS.'.read_timeout'); + $writeTimeout = Arr::get($config, self::CONFIG_OPTIONS.'.write_timeout'); + + if (is_numeric($readTimeout) && intval($readTimeout) > 0) { + $connectionConfig->setReadTimeout((int) $readTimeout); + } + + if (is_numeric($writeTimeout) && intval($writeTimeout) > 0) { + $connectionConfig->setWriteTimeout((int) $readTimeout); + } + } } From 290b04e84a2d4c329240034f28cef1fcd90d79b7 Mon Sep 17 00:00:00 2001 From: Evgeniy Ochkovskyi Date: Mon, 4 Mar 2024 14:55:07 +0200 Subject: [PATCH 2/4] Remove branch alias --- composer.json | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/composer.json b/composer.json index caf8a0fc..45fb1416 100644 --- a/composer.json +++ b/composer.json @@ -15,12 +15,12 @@ "php-amqplib/php-amqplib": "^v3.6" }, "require-dev": { - "phpunit/phpunit": "^10.0|^11.0", + "phpunit/phpunit": "^11.0", "mockery/mockery": "^1.0", "laravel/horizon": "^5.0", "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0", "laravel/pint": "^1.2", - "laravel/framework": "^9.0|^10.0|^11.0|^12.0" + "laravel/framework": "^11.0|^12.0" }, "autoload": { "psr-4": { @@ -33,9 +33,6 @@ } }, "extra": { - "branch-alias": { - "dev-master": "13.0-dev" - }, "laravel": { "providers": [ "VladimirYuldashev\\LaravelQueueRabbitMQ\\LaravelQueueRabbitMQServiceProvider" From 9deefd205473b8be866315c7e1297912b55b3013 Mon Sep 17 00:00:00 2001 From: Rostyslav Date: Thu, 29 May 2025 13:07:27 +0300 Subject: [PATCH 3/4] Refactor setting ttl values --- src/Queue/Connection/ConfigFactory.php | 34 +++++++++++++++++--------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/Queue/Connection/ConfigFactory.php b/src/Queue/Connection/ConfigFactory.php index ded5ca19..678f29c0 100644 --- a/src/Queue/Connection/ConfigFactory.php +++ b/src/Queue/Connection/ConfigFactory.php @@ -18,17 +18,21 @@ public static function make(array $config = []): AMQPConnectionConfig { return tap(new AMQPConnectionConfig, function (AMQPConnectionConfig $connectionConfig) use ($config) { // Set the connection to a Lazy by default - $connectionConfig->setIsLazy(! in_array( - Arr::get($config, 'lazy') ?? true, - [false, 0, '0', 'false', 'no'], - true) + $connectionConfig->setIsLazy( + ! in_array( + Arr::get($config, 'lazy') ?? true, + [false, 0, '0', 'false', 'no'], + true + ) ); // Set the connection to unsecure by default - $connectionConfig->setIsSecure(in_array( - Arr::get($config, 'secure'), - [true, 1, '1', 'true', 'yes'], - true) + $connectionConfig->setIsSecure( + in_array( + Arr::get($config, 'secure'), + [true, 1, '1', 'true', 'yes'], + true + ) ); if ($connectionConfig->isSecure()) { @@ -106,12 +110,18 @@ protected static function getReadWriteTimeoutFromConfig(AMQPConnectionConfig $co $readTimeout = Arr::get($config, self::CONFIG_OPTIONS.'.read_timeout'); $writeTimeout = Arr::get($config, self::CONFIG_OPTIONS.'.write_timeout'); - if (is_numeric($readTimeout) && intval($readTimeout) > 0) { - $connectionConfig->setReadTimeout((int) $readTimeout); + if (is_numeric($readTimeout)) { + $timeoutValue = (int) $readTimeout; + if ($timeoutValue > 0) { + $connectionConfig->setReadTimeout($timeoutValue); + } } - if (is_numeric($writeTimeout) && intval($writeTimeout) > 0) { - $connectionConfig->setWriteTimeout((int) $readTimeout); + if (is_numeric($writeTimeout)) { + $timeoutValue = (int) $writeTimeout; + if ($timeoutValue > 0) { + $connectionConfig->setWriteTimeout($timeoutValue); + } } } } From 1a0fb86140f530ed191bf76b4af0a15f3296c02f Mon Sep 17 00:00:00 2001 From: Rostyslav Date: Thu, 29 May 2025 13:12:51 +0300 Subject: [PATCH 4/4] Test new connection config --- tests/Feature/ConnectorTest.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/Feature/ConnectorTest.php b/tests/Feature/ConnectorTest.php index f4e330c3..327cea63 100644 --- a/tests/Feature/ConnectorTest.php +++ b/tests/Feature/ConnectorTest.php @@ -168,6 +168,8 @@ public function test_no_verification_ssl_connection(): void 'verify_peer' => false, 'passphrase' => null, ], + 'read_timeout' => 10, + 'write_timeout' => 15, ], 'worker' => env('RABBITMQ_WORKER', 'default'), @@ -180,8 +182,10 @@ public function test_no_verification_ssl_connection(): void $connection = $queue->connection('rabbitmq'); $this->assertInstanceOf(RabbitMQQueue::class, $connection); $this->assertInstanceOf(AMQPSSLConnection::class, $connection->getConnection()); - /** @var AMQPConnectionConfig */ + /** @var AMQPConnectionConfig $config */ $config = $connection->getConnection()->getConfig(); $this->assertFalse($config->getSslVerify()); + $this->assertEquals(10, $config->getReadTimeout()); + $this->assertEquals(15, $config->getWriteTimeout()); } }