Example #1
0
 /**
  * Add a request to rpc client
  *
  * @param string $msgBody
  * @param string $server
  * @param string $requestId
  * @param string $routingKey
  * @param int $expiration
  * @throws Exception\InvalidArgumentException
  */
 public function addRequest($msgBody, $server, $requestId, $routingKey = '', $expiration = 0)
 {
     if (empty($requestId)) {
         throw new Exception\InvalidArgumentException('You must provide a request Id');
     }
     $params = compact('msgBody', 'server', 'requestId', 'routingKey', 'expiration');
     $results = $this->getEventManager()->trigger(__FUNCTION__, $this, $params);
     $result = $results->last();
     if (is_array($result)) {
         $msgBody = $result['msgBody'];
         $server = $result['server'];
         $requestId = $result['requestId'];
         $routingKey = $result['routingKey'];
         $expiration = $result['expiration'];
     }
     $messageAttributes = new MessageAttributes();
     $messageAttributes->setReplyTo($this->queue->getName());
     $messageAttributes->setDeliveryMode(MessageAttributes::DELIVERY_MODE_NON_PERSISTENT);
     $messageAttributes->setCorrelationId($requestId);
     if (0 != $expiration) {
         $messageAttributes->setExpiration($expiration * 1000);
     }
     $exchange = $this->getExchange($server);
     $exchange->publish($msgBody, $routingKey, $messageAttributes->getFlags(), $messageAttributes->toArray());
     $this->requests++;
     if ($expiration > $this->timeout) {
         $this->timeout = $expiration;
     }
 }