예제 #1
0
 /**
  * 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);
     }
 }
예제 #2
0
 /**
  * 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);
     }
 }
예제 #3
0
 /**
  * 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);
 }