/** * Tests a direct-exchange binding with two explicit connections in order * to to leverage the autoDelete functionality of the server. * * @test */ public function testDirectExchangeBindingWithTwoConnections() { $messageBody = 'message binding using two separate connections'; $routingKey = 'txqueue_unit_routing'; $this->service->setPersistentDeliveryMode(FALSE); $this->admin->declareExchange(new Tx_Amqp_Messaging_DirectExchange(self::TEST_EXCHANGE, FALSE, TRUE)); $queue = $this->admin->declareQueue(); $binding = new Tx_Amqp_Messaging_Binding($queue->getName(), Tx_Amqp_Messaging_Binding::DESTINATION_QUEUE, self::TEST_EXCHANGE, $routingKey); $this->admin->declareBinding($binding); $producerService = new Tx_Amqp_Messaging_AMQPService($this->connectionFactory); $producerService->send(new \PhpAmqpLib\Message\AMQPMessage($messageBody), self::TEST_EXCHANGE, $routingKey); sleep(2); // wait for message to sync (required because of message polling) $responseMessage = $this->service->receive($queue->getName()); $this->assertEquals($messageBody, $responseMessage->body); $this->admin->deleteQueue($queue->getName()); }
protected function getConnectionStatus() { try { $service = new Tx_Amqp_Messaging_AMQPService(Tx_Amqp_Util_ConfigurationHelper::getConnectionFactory()); $admin = new Tx_Amqp_Messaging_AMQPAdmin($service); $queue = $admin->declareQueue(); $messageBody = 'ping ' . microtime(TRUE); $service->send(new \PhpAmqpLib\Message\AMQPMessage($messageBody), Tx_Amqp_Messaging_Exchange::DEFAULT_EXCHANGE, $queue->getName()); $receivedMessage = $service->receive($queue->getName()); $admin->deleteQueue($queue->getName()); if ($messageBody !== $receivedMessage->body) { return new tx_reports_reports_status_Status('AMQP', 'Warning', sprintf('Send and receive not identical. Message sent [%s] differs from received message [%s]', $messageBody, $receivedMessage->body), tx_reports_reports_status_Status::WARNING); } return new tx_reports_reports_status_Status('AMQP', 'OK', 'Connection successful. Send and receive OK.', tx_reports_reports_status_Status::OK); } catch (\Exception $e) { $statusMessage = $e->getMessage() . ' (' . get_class($e) . ')'; return new tx_reports_reports_status_Status('AMQP', 'Error', 'Unable to send and receive messages. Reason: ' . $statusMessage, tx_reports_reports_status_Status::ERROR); } }