示例#1
0
<?php

require 'autoloader.php';
$data = array('required_ack' => 1, 'timeout' => 1000, 'data' => array(array('topic_name' => 'test', 'partitions' => array(array('partition_id' => 0, 'offset' => 34, 'max_bytes' => 1024)))));
$conn = new \Kafka\Socket('192.168.1.115', '9092');
$conn->connect();
$encoder = new \Kafka\Protocol\Encoder($conn);
$encoder->fetchRequest($data);
$decoder = new \Kafka\Protocol\Decoder($conn);
$topic = $decoder->fetchResponse();
foreach ($topic as $topic_name => $partition) {
    foreach ($partition as $partId => $messageSet) {
        var_dump($partition->getHighOffset());
        foreach ($messageSet as $message) {
            var_dump((string) $message);
        }
    }
}
示例#2
0
 /**
  * fetch message to broker
  *
  * @access public
  * @return void
  */
 public function fetch()
 {
     $data = $this->_formatPayload();
     if (empty($data)) {
         return false;
     }
     $responseData = array();
     $streams = array();
     foreach ($data as $host => $requestData) {
         $connArr = $this->client->getStream($host);
         $conn = $connArr['stream'];
         $encoder = new \Kafka\Protocol\Encoder($conn);
         $encoder->fetchRequest($requestData);
         $streams[$connArr['key']] = $conn;
     }
     $fetch = new \Kafka\Protocol\Fetch\Topic($streams, $data);
     // register fetch helper
     $freeStream = new \Kafka\Protocol\Fetch\Helper\FreeStream($this->client);
     $freeStream->setStreams($streams);
     \Kafka\Protocol\Fetch\Helper\Helper::registerHelper('freeStream', $freeStream);
     // register partition commit offset
     $commitOffset = new \Kafka\Protocol\Fetch\Helper\CommitOffset($this->client);
     $commitOffset->setGroup($this->group);
     \Kafka\Protocol\Fetch\Helper\Helper::registerHelper('commitOffset', $commitOffset);
     return $fetch;
 }
示例#3
0
 /**
  * testFetchRequest
  *
  * @access public
  * @return void
  */
 public function testFetchRequest()
 {
     $encoder = new \Kafka\Protocol\Encoder($this->stream);
     $data = array();
     try {
         $encoder->fetchRequest($data);
     } catch (\Kafka\Exception\Protocol $e) {
         $this->assertSame('given fetch kafka data invalid. `data` is undefined.', $e->getMessage());
     }
     $data = array('data' => array(array('topic_name' => 'debug', 'partitions' => array(array('partition_id' => 1)))));
     $len = $encoder->fetchRequest($data);
     $this->assertEquals('0000003e000100000000000000096b61666b612d706870ffffffff000000640001000000000001000564656275670000000100000001000000000000000006400000', $this->getData($len));
 }