Ejemplo n.º 1
0
 /**
  * {@inheritdoc}
  */
 public function release(int $delay = 0)
 {
     $this->delete();
     $body = $this->message->body;
     $body = json_decode($body, true);
     $attempts = $this->attempts();
     $job = unserialize($body['data']['command']);
     // write attempts to job
     $job->attempts = $attempts + 1;
     $data = $body['data'];
     if ($delay > 0) {
         $this->connection->later($delay, $job, $data, $this->getQueue());
     } else {
         $this->connection->push($job, $data, $this->getQueue());
     }
 }
Ejemplo n.º 2
0
 public function testDelayedPushProperlyPushesJobOnToRabbitMQ()
 {
     $encrypter = $this->mock(EncrypterContract::class);
     $encrypter->shouldReceive('encrypt');
     $channel = $this->mock(AMQPChannel::class);
     $channel->shouldReceive('exchange_declare')->twice()->with('messages.exchange', 'direct', false, true, false);
     $channel->shouldReceive('queue_declare')->once()->with('cnc', false, true, false, false);
     $channel->shouldReceive('queue_declare')->once();
     $channel->shouldReceive('queue_bind')->once()->with('cnc', 'messages.exchange', 'cnc');
     $channel->shouldReceive('queue_bind')->once()->with('cnc_deferred_5', 'messages.exchange', 'cnc_deferred_5');
     $channel->shouldReceive('basic_publish')->once();
     $connection = $this->mock(AMQPStreamConnection::class);
     $connection->shouldReceive('channel')->once()->andReturn($channel);
     $queue = new RabbitMQQueue($connection, ['queue' => 'cnc', 'queue_params' => ['passive' => false, 'durable' => true, 'exclusive' => false, 'auto_delete' => false], 'exchange_params' => ['name' => 'messages.exchange', 'type' => 'direct', 'passive' => false, 'durable' => true, 'auto_delete' => false], 'exchange_declare' => true, 'queue_declare_bind' => 'cnc']);
     $queue->setEncrypter($encrypter);
     $queue->later(5, 'foo', ['someData']);
 }