/** * send message to broker * * @access public * @return bool|array */ 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 Protocol\Encoder($conn); $encoder->produceRequest($requestData); if ((int) $this->requiredAck !== 0) { // get broker response $decoder = new 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; }