/**
  * @param Message $message
  * @param Deferred|null $deferred
  * @throws RuntimeException If a $deferred is passed but producer can not handle it
  * @return void
  */
 public function __invoke(Message $message, Deferred $deferred = null)
 {
     if (null !== $deferred) {
         throw new RuntimeException(__CLASS__ . ' cannot handle query messages which require future responses.');
     }
     $data = $this->arrayFromMessage($message);
     $attributes = ['app_id' => $this->appId, 'timestamp' => $message->createdAt()->getTimestamp(), 'type' => $message->messageName()];
     $this->producer->publish($data, $message->messageName(), Constants::AMQP_NOPARAM, $attributes);
 }
 /**
  * @param Message $message
  * @param Deferred|null $deferred
  * @return void
  * @throws RuntimeException
  */
 public function __invoke(Message $message, Deferred $deferred = null)
 {
     if (!$message instanceof DelayedMessage) {
         throw new RuntimeException(sprintf('Message is not a delayed message (instance of %s)', DelayedMessage::class));
     }
     if (null !== $deferred) {
         throw new RuntimeException(__CLASS__ . ' cannot handle query messages which require future responses.');
     }
     $data = $this->arrayFromMessage($message);
     $attributes = ['headers' => ['x-delay' => $message->delay()], 'app_id' => $this->appId, 'timestamp' => $message->createdAt()->getTimestamp(), 'type' => $message->messageName()];
     $this->producer->publish($data, $message->messageName(), Constants::AMQP_NOPARAM, $attributes);
 }