Example #1
0
 /**
  * Send reply to rpc client
  *
  * @param Response $response
  * @param Envelope $envelope
  */
 protected function sendReply(Response $response, Envelope $envelope)
 {
     $attributes = ['content_type' => 'application/json', 'content_encoding' => 'UTF-8', 'delivery_mode' => 2, 'correlation_id' => $envelope->getCorrelationId(), 'app_id' => $this->appId, 'headers' => ['jsonrpc' => JsonRpcResponse::JSONRPC_VERSION]];
     if ($response->isError()) {
         $payload = ['error' => ['code' => $response->error()->code(), 'message' => $response->error()->message()], 'data' => $response->data()];
     } else {
         $payload = ['result' => $response->result()];
     }
     $this->exchange->publish(json_encode($payload), $envelope->getReplyTo(), Constants::AMQP_NOPARAM, $attributes);
 }
Example #2
0
 /**
  * @inheritdoc
  */
 public function waitForBasicReturn(float $timeout = 0.0)
 {
     $this->exchange->getChannel()->waitForBasicReturn($timeout);
 }
Example #3
0
 /**
  * @param Exchange $exchange
  * @param string $exchangeName
  * @param array $routingKeys
  * @param array $bindArguments
  */
 private function bindExchange(Exchange $exchange, string $exchangeName, array $routingKeys, array $bindArguments)
 {
     if (empty($routingKeys)) {
         $exchange->bind($exchangeName, '', $bindArguments);
     } else {
         foreach ($routingKeys as $routingKey) {
             $exchange->bind($exchangeName, $routingKey, $bindArguments);
         }
     }
 }