/** * @test */ public function shouldSentNackSignal() { // Create message $message = $this->queueTemplate->createMessage(['msg' => 'blaat']); $message->delivery_info = ['channel' => $this->queueTemplate->channel(), 'delivery_tag' => 123]; // Create a failing consumer instance. This instance will return false. A nack signal should be sent. $consumer = new CleanFailConsumer($this->queueTemplate); // Execute consumer call_user_func($consumer, $message); // Assert that the ack signal was sent $this->assertEquals(1, $this->basicNackInvocations->getInvocationCount()); // Create a failing consumer instance. This instance will return false. A nack signal should be sent. $consumer = new FailWithExceptionConsumer($this->queueTemplate); // Execute consumer try { call_user_func($consumer, $message); } catch (\Exception $e) { // Make sure no exception is thrown here. } // Assert that the ack signal was sent $this->assertEquals(1, $this->basicNackInvocations->getInvocationCount()); }
/** * @return bool */ public function isBusy() { return count($this->queueTemplate->channel()->callbacks) > 0; }
/** * @param QueueTemplate $queueTemplate * @param array $data * * @return AMQPMessage */ public function createMessage(QueueTemplate $queueTemplate, array $data) { return new AMQPMessage($queueTemplate->getSerializer()->serialize($data), ['delivery_mode' => RabbitMQ::DELIVERY_MODE_PERSISTENT]); }
/** * @return AMQPChannel */ public function getChannel() { // Create channel or reuse the existing one... return $this->queueTemplate->channel(); }
/** * @param QueueTemplate $queueTemplate * @param array $data * * @return AMQPMessage */ public function createMessage(QueueTemplate $queueTemplate, array $data) { return new AMQPMessage($queueTemplate->getSerializer()->serialize($data)); }