/** * @param AMQPMessage $amqpMessage * * @return BasicMessage|RpcRequestMessage|RpcResponseMessage * @throws MessageException */ public function toMessageInterface($amqpMessage) { if (!$amqpMessage instanceof AMQPMessage) { throw MessageException::wrongMessageType(get_class($amqpMessage), 'AMQPMessage'); } try { $msgType = $amqpMessage->get(MessageInterface::PROPERTY_TYPE); } catch (\Exception $e) { // Type is not defined in AMQPMessage properties => Load BasicMessage. $msgType = ''; } // Instance proper message type switch ($msgType) { case MessageInterface::TYPE_RPC_RESPONSE: $message = new RpcResponseMessage($amqpMessage->body, $amqpMessage->get_properties()); break; case MessageInterface::TYPE_RPC_REQUEST: $message = new RpcRequestMessage($amqpMessage->body, $amqpMessage->get_properties()); break; case MessageInterface::TYPE_BASIC: default: $message = new BasicMessage($amqpMessage->body, $amqpMessage->get_properties()); break; } // Set the original message $message->setOriginalMessage($amqpMessage); return $message; }
/** * @param array $properties * * @throws MessageException */ protected function checkRequiredPropertiesPresence(array $properties) { parent::checkRequiredPropertiesPresence($properties); if (MessageInterface::TYPE_RPC_RESPONSE != $properties[MessageInterface::PROPERTY_TYPE]) { throw MessageException::wrongMessageType($this->getType(), MessageInterface::TYPE_RPC_REQUEST); } }
/** * @param mixed $data * @param bool $closeConnectionAfterPublish * * @throws PublisherException */ public function publish($data, $closeConnectionAfterPublish = false) { $this->checkDestination(); // Compose message $message = new BasicMessage($this->getSerializer()->serialize($data)); $message->setContentType($this->getSerializer()->getSerializedContentType()); // Publish message $this->publishMessage($message); // Close connection if needed if (true == $closeConnectionAfterPublish) { $this->connector->closeConnection(); } }
public function test_getPayload_returnsPayloadInterface() { $message = new BasicMessage(); $payload = $message->getPayload(); $this->assertTrue($payload instanceof PayloadInterface); }