/**
  * @dataProvider propertiesDataProvider
  */
 public function testSerializeProperties(array $expected, array $properties)
 {
     /** @var AMQPReader $reader */
     $reader = new AMQPReader(null);
     /** @var AMQPMessage $message */
     $message = new AMQPMessage('', $properties);
     /** @var string $encodedData */
     $encodedData = $message->serialize_properties();
     // Bypasses the network part and injects the encoded data into the reader
     $reader->reuse($encodedData);
     // Injects the reader into the message
     $message->load_properties($reader);
     $this->assertEquals($expected, $message->get_properties());
 }
Exemple #2
0
 /**
  * Callback executed when a message is received. Dumps the message body, delivery_info and properties.
  *
  * @param AMQPMessage $msg The received message.
  *
  * @return void
  */
 public function execute(AMQPMessage $msg)
 {
     echo str_repeat('-', 60) . PHP_EOL;
     echo '[RECV ' . date('c') . ']' . PHP_EOL . '<content>' . PHP_EOL . $msg->body . PHP_EOL . '</content>' . PHP_EOL . PHP_EOL;
     echo "*" . ' INFO ' . PHP_EOL;
     foreach ($msg->{'delivery_info'} as $key => $value) {
         if (is_scalar($value)) {
             echo "** " . $key . ' = ' . $value . PHP_EOL;
         }
     }
     echo "*" . ' PROPERTIES ' . PHP_EOL;
     foreach ($msg->get_properties() as $property => $value) {
         if (is_scalar($value)) {
             echo "** " . $property . ' = ' . $value . PHP_EOL;
         }
     }
 }
Exemple #3
0
 /**
  * Overridden to inject the queue name into the AMQP message
  * @param BaseAMQPMessage $msg
  */
 public function processMessage(BaseAMQPMessage $msg)
 {
     $newMsg = new AMQPMessage($msg->body, $msg->get_properties());
     $newMsg->delivery_info = $msg->delivery_info;
     $newMsg->body_size = $msg->body_size;
     $newMsg->is_truncated = $msg->is_truncated;
     $newMsg->setQueueName($this->queueName);
     $processFlag = call_user_func($this->callback, $newMsg);
     $this->handleProcessMessage($newMsg, $processFlag);
 }