Example #1
0
 /**
  * Return the first element in the queue
  *
  * @param  integer    $maxMessages
  * @param  integer    $timeout
  * @param  \ZendQueue\Queue $queue
  * @return \ZendQueue\Message\MessageIterator
  */
 public function receive($maxMessages = null, $timeout = null, Queue $queue = null)
 {
     if ($maxMessages === null) {
         $maxMessages = 1;
     }
     if ($timeout === null) {
         $timeout = self::RECEIVE_TIMEOUT_DEFAULT;
     }
     if ($queue === null) {
         $queue = $this->_queue;
     }
     // read
     $data = array();
     // signal that we are reading
     if (!$this->isSubscribed($queue)) {
         $this->subscribe($queue);
     }
     if ($maxMessages > 0) {
         if ($this->_client->canRead()) {
             for ($i = 0; $i < $maxMessages; $i++) {
                 $response = $this->_client->receive();
                 switch ($response->getCommand()) {
                     case 'MESSAGE':
                         $datum = array('message_id' => $response->getHeader('message-id'), 'handle' => $response->getHeader('message-id'), 'body' => $response->getBody(), 'md5' => md5($response->getBody()));
                         $data[] = $datum;
                         break;
                     default:
                         $block = print_r($response, true);
                         throw new Exception\UnexpectedValueException('Invalid response received: ' . $block);
                 }
             }
         }
     }
     $options = array('queue' => $queue, 'data' => $data, 'messageClass' => $queue->getMessageClass());
     $classname = $queue->getMessageSetClass();
     return new $classname($options);
 }
Example #2
0
 public function testSendAndReceiveByteMessage()
 {
     $frame = new Frame();
     $frame->setCommand('testing');
     $frame->setHeader('testing', 1);
     $frame->setBody('hello ' . Frame::END_OF_FRAME . ' world');
     $client = new Client();
     $client->addConnection('tcp', 'localhost', '11232', '\\ZendQueueTest\\Stomp\\Mock');
     $client->send($frame);
     $this->assertTrue($client->canRead());
     $test = $client->receive();
     $this->assertEquals('testing', $test->getCommand());
     $this->assertEquals(1, $test->getHeader('testing'));
     $this->assertEquals('hello ' . Frame::END_OF_FRAME . ' world', $test->getBody());
 }