/** * @throws \Exception */ public function run() { $this->numberOfReceivedMessages = 0; try { // Connect $this->connector->connect(); // Start consuming $this->connector->basicConsume($this->queue, $this->getCallback()); while (0 < count($this->connector->getChannelCallbacks())) { $this->connector->wait(); } // Close connection $this->connector->closeConnection(); } catch (ConnectorException $e) { $this->logger->warning($e->getMessage()); // Try reconnection $this->connector->connect(true); } catch (\ErrorException $e) { $this->logger->warning($e->getMessage()); // Try reconnection $this->connector->connect(true); } catch (\Exception $e) { $this->logger->error($e->getMessage()); throw $e; } }
/** * @return void */ public function run() { $this->connector->connect(); $this->connector->defineQoS(1); $this->connector->basicConsume($this->requestsQueue, $this->getCallback()); while (count($this->connector->getChannelCallbacks())) { $this->logger->debug('Waiting...'); $this->connector->wait(); } $this->connector->closeConnection(); }
/** * @param mixed $data * @param bool $closeConnectionAfterPublish * * @throws PublisherException */ public function publish($data, $closeConnectionAfterPublish = false) { $this->checkDestination(); // Compose message $message = new BasicMessage($this->getSerializer()->serialize($data)); $message->setContentType($this->getSerializer()->getSerializedContentType()); // Publish message $this->publishMessage($message); // Close connection if needed if (true == $closeConnectionAfterPublish) { $this->connector->closeConnection(); } }
/** * @param string $routingKey * @param string $procedure * @param array $params * @param bool $closeConnectionAfterCall * * @return RpcResponsePayload */ public function call($routingKey, $procedure, array $params = [], $closeConnectionAfterCall = false) { // Reset current response object $this->resetCurrentRpcResponse(); // Connect $this->connector->connect(); // Declare responses queue $this->declareResponsesQueue(); // Create an empty request message $request = MessagesBuilder::emptyRpcRequest($this->getSerializer()->getSerializedContentType()); // Set message payload $request->setPayload(RpcRequestPayload::create($procedure, $params)); // Set other message properties $request->setExpiration(1000 * $this->getTimeOut()); $request->setReplyTo($this->responsesQueue); // Send request $this->sendRequest($request, $routingKey); if (true == $closeConnectionAfterCall) { $this->connector->closeConnection(); } return $this->rpcResponse->getPayload(); }