public function produceRequest($payloads, $compression = self::COMPRESSION_NONE)
{
if (!isset($payloads['data'])) {
throw new \Kafka\Exception\Protocol('given procude data invalid. `data` is undefined.');
}
if (!isset($payloads['required_ack'])) {
// default server will not send any response
// (this is the only case where the server will not reply to a request)
$payloads['required_ack'] = 0;
}
if (!isset($payloads['timeout'])) {
$payloads['timeout'] = 100;
// default timeout 100ms
}
$header = self::requestHeader('kafka-php', 0, self::PRODUCE_REQUEST);
$data = self::pack(self::BIT_B16, $payloads['required_ack']);
$data .= self::pack(self::BIT_B32, $payloads['timeout']);
$data .= self::encodeArray($payloads['data'], array(__CLASS__, '_encodeProcudeTopic'), $compression);
$data = self::encodeString($header . $data, self::PACK_INT32);
return $this->stream->write($data);
}