public function map(Envelope $envelope)
 {
     /* @var \Bernard\Message\DefaultMessage $message */
     $message = $envelope->getMessage();
     $serviceId = sprintf('simple_bus.bernard_bundle_bridge.%s_consumer', $message->get('type'));
     return $this->container->get($serviceId);
 }
 /**
  * Returns the right Receiver (callable) based on the Envelope.
  *
  * @param  Envelope $envelope
  * @throws \InvalidArgumentException
  * @return array
  */
 public function map(Envelope $envelope)
 {
     $message = $envelope->getMessage();
     if (!$message instanceof BernardMessage) {
         throw new \InvalidArgumentException(sprintf("Routing the message %s failed due to wrong message type", $envelope->getName()));
     }
     return array($this, "routeMessage");
 }
 /**
  * @param  Envelope $envelope
  * @throws InvalidArgumentException
  * @return string
  */
 public function serialize(Envelope $envelope)
 {
     $message = $envelope->getMessage();
     if (!$message instanceof BernardMessage) {
         throw new InvalidArgumentException(sprintf("Serialize message %s failed due to wrong message type", $message->getName()));
     }
     $messageData = $this->messageConverter->convertToArray($message->getProophMessage());
     MessageDataAssertion::assert($messageData);
     $messageData['created_at'] = $message->getProophMessage()->createdAt()->format('Y-m-d\\TH:i:s.u');
     return json_encode(['message' => $messageData, 'timestamp' => $envelope->getTimestamp()]);
 }