/**
  * Adds a message to the queue.
  *
  * @param Message   $message
  * @param           $tokens
  * @param           $language
  *
  * @return $this
  */
 public function addMessage(Message $message, $tokens, $language)
 {
     $gateway = $message->getRelated('gateway');
     if ($gateway === null || $gateway->type !== 'queue') {
         throw new \InvalidArgumentException('You cannot add a message to the queue that does not belong to any queue gateway.');
     }
     $objQueuedMessage = new QueuedMessage();
     $objQueuedMessage->message = $message->id;
     $objQueuedMessage->sourceQueue = $gateway->id;
     $objQueuedMessage->targetGateway = $gateway->queue_targetGateway;
     $objQueuedMessage->dateAdded = time();
     $objQueuedMessage->setTokens($tokens);
     $objQueuedMessage->language = $language;
     $objQueuedMessage->save();
     return $this;
 }