diff --git a/src/Mcfedr/QueueManagerBundle/Manager/DoctrineDelayQueueManager.php b/src/Mcfedr/QueueManagerBundle/Manager/DoctrineDelayQueueManager.php index 3a8285c..cc2aa3a 100644 --- a/src/Mcfedr/QueueManagerBundle/Manager/DoctrineDelayQueueManager.php +++ b/src/Mcfedr/QueueManagerBundle/Manager/DoctrineDelayQueueManager.php @@ -55,10 +55,11 @@ public function put(string $name, array $arguments = [], array $options = []): J $jobTime = new Carbon("+{$options['delay']} seconds", new \DateTimeZone('UTC')); } - if (!isset($jobTime) || $jobTime < new \DateTime('+30 seconds', new \DateTimeZone('UTC'))) { - if (isset($jobTime) && (!isset($options['force_delay']) || !$options['force_delay'])) { - return $this->queueManagerRegistry->put($name, $arguments, $jobOptions, $jobManager); - } + $executeImmediately = !isset($jobTime) || $jobTime < new \DateTime('+30 seconds', new \DateTimeZone('UTC')); + $executeImmediately = $executeImmediately && (!isset($jobTime) || !isset($options['force_delay']) || !$options['force_delay']); + + if ($executeImmediately) { + return $this->queueManagerRegistry->put($name, $arguments, $jobOptions, $jobManager); } $job = new DoctrineDelayJob($name, $arguments, $jobOptions, $jobManager, $jobTime); diff --git a/tests/Mcfedr/QueueManagerBundle/Tests/Manager/DoctrineDelayQueueManagerTest.php b/tests/Mcfedr/QueueManagerBundle/Tests/Manager/DoctrineDelayQueueManagerTest.php index d4959e6..f3a711b 100644 --- a/tests/Mcfedr/QueueManagerBundle/Tests/Manager/DoctrineDelayQueueManagerTest.php +++ b/tests/Mcfedr/QueueManagerBundle/Tests/Manager/DoctrineDelayQueueManagerTest.php @@ -242,4 +242,13 @@ public function testNonForceDelay(): void self::assertNotInstanceOf(DoctrineDelayJob::class, $putJob); } + + public function testNonForceDelayWithNoTimeSet(): void + { + $putJob = $this->manager->put('test_worker', [ + 'argument_a' => 'a', + ]); + + self::assertNotInstanceOf(DoctrineDelayJob::class, $putJob); + } }