public function publish(array $message, array $options = []) { $message = new Message(time(), $message, []); $this->dispatcher->dispatch(Events::Message($this->name), new MessageEvent($this->name, $message)); $context = ['MessageId' => $message->getId()]; $this->log(200, 'Message received and dispatched on Sync Queue', $context); }
/** * {@inheritDoc} */ public function receive(array $options = []) { $options = $this->mergeOptions($options); if (!$this->queueExists()) { $this->create(); } $messages = $this->ironmq->reserveMessages($this->getNameWithPrefix(), $options['messages_to_receive'], $options['message_timeout'], $options['receive_wait_time']); if (!is_array($messages)) { $this->log(200, "No messages found in queue."); return []; } // Convert to Message Class foreach ($messages as &$message) { $id = $message->id; $body = json_decode($message->body, true); $metadata = ['reserved_count' => $message->reserved_count, 'reservation_id' => $message->reservation_id]; unset($body['_qpush_queue']); $message = new Message($id, json_encode($body), $metadata); $this->log(200, "Message has been received.", ['message_id' => $id]); } $this->reservedMessages = array_combine(array_values(array_map(function (Message $message) { return $message->getId(); }, $messages)), $messages); return $messages; }