/** * @param RpcResponseMessage $response * * @return void */ protected function sendResponse(RpcResponseMessage $response) { if ($this->currentRequest instanceof RpcRequestMessage) { $correlationId = $this->currentRequest->getCorrelationId(); $response->setCorrelationId($correlationId); // Publish reponse message $this->connector->basicPublish($response, '', $this->currentRequest->getReplyTo()); } else { $this->logger->warning('Imposible to send response! Invalid request.'); } }
public function test_constructor_withProperParams_populateBodyAndPropertiesProperly() { $contentType = MessageInterface::CONTENT_TYPE_PLAIN_TEXT; $properties = [MessageInterface::PROPERTY_CONTENT_TYPE => $contentType]; $message = new RpcRequestMessage('', $properties); // timestamp $this->assertFalse(empty($message->getTimestamp()), 'Empty timestamp!'); $this->assertTrue(is_int($message->getTimestamp()), 'Timestamp is not int!'); // type $this->assertFalse(empty($message->getType()), 'Empty type!'); $this->assertEquals(MessageInterface::TYPE_RPC_REQUEST, $message->getType(), sprintf('Type is not "%s"!', MessageInterface::TYPE_RPC_REQUEST)); // correlation id $this->assertFalse(empty($message->getCorrelationId()), 'Empty correlation id!'); // content type $this->assertFalse(empty($message->getContentType()), 'Empty content type!'); $this->assertEquals(MessageInterface::CONTENT_TYPE_PLAIN_TEXT, $message->getContentType(), sprintf('Content type is not "%s"', $contentType)); // body $this->assertTrue(empty($message->getBody()), 'Body is not empty!'); }
/** * @param RpcRequestMessage $request * @param string $routingKey */ protected final function sendRequest(RpcRequestMessage $request, $routingKey) { $this->correlarionId = $request->getCorrelationId(); // Publish request message $this->connector->basicPublish($request, $this->exchange, $routingKey); // Wait for response $this->logger->debug('Waiting for response...', ['body' => $request->getBody(), 'properties' => $request->getProperties()]); $this->connector->basicConsume($this->responsesQueue, $this->getCallback()); while (!$this->rpcResponse) { $this->connector->wait($this->getTimeOut()); } }