/**
  * @param LocationInterface $location
  * @param Request           $request
  *
  * @return AMQPMessage
  */
 private function createMessage(LocationInterface $location, Request $request)
 {
     $encoded = $this->encoder->encode($request->getArguments());
     return new AMQPMessage($encoded->getBody(), ['content_type' => $encoded->getType(), 'message_id' => uniqid('', true), 'timestamp' => time(), 'application_headers' => new AMQPTable(array_merge($request->getHeaders(), ['to' => $location->name(), 'topic' => $request->getTopic(), 'version' => $request->getVersion()]))]);
 }
 /**
  * @param Request $request
  *
  * @return string
  *
  * @throws EncodingException
  */
 private function getEncodedBody(Request $request)
 {
     $body = json_encode(['jsonrpc' => '2.0', 'method' => $request->getTopic(), 'params' => $request->getArguments(), 'id' => 1]);
     if (json_last_error() !== JSON_ERROR_NONE) {
         throw new EncodingException(sprintf('Unable to encode request: %s', json_last_error_msg()));
     }
     return $body;
 }