/**
  * @inheritdoc
  */
 public function publish(Message $message, \DateTime $date = null, $flags = ExchangeInterface::NOPARAM)
 {
     if ($date instanceof \DateTime) {
         $delay = $date->getTimestamp() - time();
         if ($delay < 0) {
             throw new \OutOFBoundsException('You cannot publish a message in the past');
         }
         // set delay in milliseconds
         $message->setHeader(MessageProperties::KEY_DELAY, $delay * 1000);
     }
     $body = $message->getBody();
     $route = $message->getRoutingKey();
     $props = $message->getProperties()->toArray();
     return $this->exchange->publish($body, $route, $flags, $props);
 }
 /**
  * @test
  * @expectedException        \OutOfBoundsException
  * @expectedExceptionMessage You cannot publish a message in the past
  */
 public function it_cannot_publish_a_message_in_the_past()
 {
     $message = $this->publisher->createMessage('test');
     $this->exchange->shouldReceive('publish')->never();
     $this->publisher->publish($message, new \DateTime('-10 minutes'));
 }