/** * @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()); }
/** * Publishes a message * * @param AMQPMessage $msg * @param string $exchange * @param string $routing_key * @param bool $mandatory * @param bool $immediate * @param null $ticket */ public function basic_publish($msg, $exchange = '', $routing_key = '', $mandatory = false, $immediate = false, $ticket = null) { $pkt = new AMQPWriter(); $pkt->write($this->pre_publish($exchange, $routing_key, $mandatory, $immediate, $ticket)); $this->connection->send_content($this->channel_id, 60, 0, mb_strlen($msg->body, 'ASCII'), $msg->serialize_properties(), $msg->body, $pkt); if ($this->next_delivery_tag > 0) { $this->published_messages[$this->next_delivery_tag] = $msg; $this->next_delivery_tag = bcadd($this->next_delivery_tag, '1', 0); } }