/** * 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); }
/** * @inheritdoc */ public function waitForBasicReturn(float $timeout = 0.0) { $this->exchange->getChannel()->waitForBasicReturn($timeout); }
/** * @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); } } }