/** * @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); }