diff --git a/src/Job.php b/src/Job.php index 1446c37..a744f63 100644 --- a/src/Job.php +++ b/src/Job.php @@ -8,6 +8,7 @@ use Interop\Queue\PsrConsumer; use Interop\Queue\PsrContext; use Interop\Queue\PsrMessage; +use Interop\Queue\DeliveryDelayNotSupportedException; class Job extends BaseJob implements JobContract { @@ -41,7 +42,7 @@ public function __construct(Container $container, PsrContext $psrContext, PsrCon $this->psrMessage = $psrMessage; $this->connectionName = $connectionName; } - + public function getJobId() { return $this->psrMessage->getMessageId(); @@ -62,16 +63,20 @@ public function delete() */ public function release($delay = 0) { - if ($delay) { - throw new \LogicException('To be implemented'); - } + parent::release($delay); $requeueMessage = clone $this->psrMessage; $requeueMessage->setProperty('x-attempts', $this->attempts() + 1); - $this->psrContext->createProducer()->send($this->psrConsumer->getQueue(), $requeueMessage); + $producer = $this->psrContext->createProducer(); + + try { + $producer->setDeliveryDelay($this->secondsUntil($delay) * 1000); + } catch (DeliveryDelayNotSupportedException $e) { + } $this->psrConsumer->acknowledge($this->psrMessage); + $producer->send($this->psrConsumer->getQueue(), $requeueMessage); } /**