/** * @test */ public function testReceiveTransactional() { $this->admin->declareQueue(new Tx_Amqp_Messaging_Queue(self::TEST_QUEUE, FALSE, FALSE, TRUE)); $this->service->txSelect(); $messageBody1 = 'test payload (1) ' . microtime(TRUE); $this->service->send(new \PhpAmqpLib\Message\AMQPMessage($messageBody1), '', self::TEST_QUEUE); $messageBody2 = 'test payload (2) ' . microtime(TRUE); $this->service->send(new \PhpAmqpLib\Message\AMQPMessage($messageBody2), '', self::TEST_QUEUE); $this->service->txCommit(); $consumerService = new Tx_Amqp_Messaging_AMQPService($this->connectionFactory); $consumerService->txSelect(); $responseMessage1 = $consumerService->receive(self::TEST_QUEUE); $this->assertEquals($messageBody1, $responseMessage1->body, 'Transactional receive of message 1 failed?'); $responseMessage2 = $consumerService->receive(self::TEST_QUEUE); $this->assertEquals($messageBody2, $responseMessage2->body, 'Transactional receive of message 2 failed?'); $consumerService->txRollback(); $consumerService->txSelect(); $consumerService->requeueDelivered(); $responseMessage1 = $consumerService->receive(self::TEST_QUEUE); $this->assertEquals($messageBody1, $responseMessage1->body, 'Reiceive of message 1 failed?'); $responseMessage2 = $consumerService->receive(self::TEST_QUEUE); $this->assertEquals($messageBody2, $responseMessage2->body, 'Reiceive of message 2 failed?'); $consumerService->txCommit(); $this->admin->deleteQueue(self::TEST_QUEUE); }