Exemplo n.º 1
0
 /**
  * @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);
 }