/** * Open a connection with the RabbitMQ Server * * @return void */ public function open() { try { $this->AMQPConnection = new AMQPConnection($this->host, $this->port, $this->username, $this->password, $this->vhost); $this->channel = $this->AMQPConnection->channel(); $this->channel->queue_declare($this->queue_name, false, true, false, false); $this->channel->exchange_declare($this->queue_name, 'x-delayed-message', false, true, false, false, false, new AMQPTable(["x-delayed-type" => "direct"])); $this->channel->queue_bind($this->queue_name, $this->queue_name); } catch (Exception $e) { throw new Exception($e); } }
/** * Open a connection with the RabbitMQ Server * * @return void */ public function open() { try { $this->AMQPConnection = new AMQPConnection($this->host, $this->port, $this->username, $this->password, $this->vhost); $this->channel = $this->AMQPConnection->channel(); $this->channel->queue_declare($this->queue_name, false, true, false, false); $this->channel->exchange_declare($this->exchange, 'direct', false, true, false); $this->channel->queue_bind($this->queue_name, $this->exchange); } catch (Exception $e) { throw new Exception($e); } }
/** * Publish message to queue. * * @param mixed $message (array or string) * @param Queue $queue * * @return bool|null */ public function send($message, Queue $queue = null) { if ($queue === null) { $queue = $this->_queue; } if (is_array($message)) { $message = \Zend\Json\Encoder::encode($message); } $this->exchangeName = 'router'; /* name: $exchange type: direct passive: false durable: true // the exchange will survive server restarts auto_delete: false //the exchange won't be deleted once the channel is closed. */ $this->channel->exchange_declare($this->exchangeName, 'direct', false, true, false); $this->channel->queue_bind($queue->getName(), $this->exchangeName); $amqpMessage = new AMQPMessage($message, ['content_type' => 'text/plain', 'delivery_mode' => 2]); $this->channel->basic_publish($amqpMessage, $this->exchangeName); }