예제 #1
0
<?php

require 'autoloader.php';
$msg = '/weibo/indexrightrecom?cuid=1738550761&ouid=1738550761&lang=zh-cn&gender=f&version=5&province=100&city=1000&ip=27.37.36.86&url=http%253A%252F%252Fweibo.com%252Fpls%252Fcommonapi%253Frequest_group%253D5' . time();
$data = array('required_ack' => 1, 'timeout' => 1000, 'data' => array(array('topic_name' => 'test', 'partitions' => array(array('partition_id' => 0, 'messages' => array($msg))))));
echo $msg;
$conn = new \Kafka\Socket('192.168.1.115', '9092');
$conn->connect();
$encoder = new \Kafka\Protocol\Encoder($conn);
$encoder->produceRequest($data);
$decoder = new \Kafka\Protocol\Decoder($conn);
$result = $decoder->produceResponse();
var_dump($result);
예제 #2
0
 /**
  * send message to broker
  *
  * @access public
  * @return void
  */
 public function send()
 {
     $data = $this->_formatPayload();
     if (empty($data)) {
         return false;
     }
     $responseData = array();
     foreach ($data as $host => $requestData) {
         $stream = $this->client->getStream($host);
         $conn = $stream['stream'];
         $encoder = new \Kafka\Protocol\Encoder($conn);
         $encoder->produceRequest($requestData);
         if ((int) $this->requiredAck !== 0) {
             // get broker response
             $decoder = new \Kafka\Protocol\Decoder($conn);
             $response = $decoder->produceResponse();
             foreach ($response as $topicName => $info) {
                 if (!isset($responseData[$topicName])) {
                     $responseData[$topicName] = $info;
                 } else {
                     $responseData[$topicName] = array_merge($info, $responseData[$topicName]);
                 }
             }
         }
         $this->client->freeStream($stream['key']);
     }
     $this->payload = array();
     return $responseData;
 }
예제 #3
0
 /**
  * testProduceRequest
  *
  * @access public
  * @return void
  */
 public function testProduceRequest()
 {
     $encoder = new \Kafka\Protocol\Encoder($this->stream);
     $data = array();
     try {
         $encoder->produceRequest($data);
     } catch (\Kafka\Exception\Protocol $e) {
         $this->assertSame('given procude data invalid. `data` is undefined.', $e->getMessage());
     }
     $data = array('data' => array(array('topic_name' => 'debug', 'partitions' => array(array('partition_id' => 1, 'messages' => array('test1'))))));
     $len = $encoder->produceRequest($data);
     $this->assertEquals('0000004f000000000000000000096b61666b612d706870000000000064000000010005646562756700000001000000010000001f000000000000000000000013cb8eb9ab000000000000000000057465737431', $this->getData($len));
 }