/**
  * @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);
     }
 }
Example #3
0
 /**
  * @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();
     }
 }
Example #4
0
 public function test_getPayload_returnsPayloadInterface()
 {
     $message = new BasicMessage();
     $payload = $message->getPayload();
     $this->assertTrue($payload instanceof PayloadInterface);
 }