Esempio n. 1
0
 /**
  * @param \Rhubarb\Task $task
  * @throws \Rhubarb\Exception\Exception
  */
 public function publishTask(\Rhubarb\Task $task)
 {
     $connection = $this->getConnection();
     $connection->connect();
     $channel = new AMQPChannel($connection);
     if (!$channel->isConnected()) {
         throw new Exception('AMQP Failed to Connect');
     }
     $queue = new AMQPQueue($channel);
     $queue->setName($task->message->getQueue());
     $queue->setFlags(AMQP_DURABLE);
     if ($this->options['options']) {
         $queue->setArguments($this->options['options']);
     }
     $queue->declareQueue();
     $exchange = new AMQPExchange($channel);
     $exchange->setFlags(AMQP_PASSIVE | AMQP_DURABLE);
     $exchange->setType(AMQP_EX_TYPE_DIRECT);
     $exchange->setName($task->message->getPropExchange());
     $exchange->declareExchange();
     $queue->bind($task->message->getPropExchange(), $task->getId());
     $msgProperties = array('content_type' => $task->getMessage()->getContentType(), 'content_encoding' => $task->getMessage()->getContentEncoding(), 'encoding' => $task->getMessage()->getContentEncoding());
     if ($task->getPriority()) {
         $msgProperties['priority'] = $task->getPriority();
     }
     $exchange->publish((string) $task, $task->getId(), AMQP_NOPARAM, $msgProperties);
     $this->getConnection()->disconnect();
 }
Esempio n. 2
0
 /**
  * @param \Rhubarb\Task $task
  */
 public function publishTask(\Rhubarb\Task $task)
 {
     if (!$task->getMessage()->getPropRoutingKey()) {
         $task->getMessage()->setPropRoutingKey($task->getId());
     }
     $channel = $this->getConnection()->channel();
     $channel->queueDeclare(array('queue' => $task->getMessage()->getQueue(), 'durable' => $task->getMessage()->getPropDurable(), 'auto_delete' => $task->getMessage()->getPropAutoDelete(), 'arguments' => $task->getMessage()->getPropQueueArgs()));
     $channel->exchangeDeclare($task->getMessage()->getPropExchange(), 'direct', array('passive' => true, 'durable' => true));
     $channel->queueBind($task->getMessage()->getQueue(), $task->getMessage()->getPropExchange(), array('routing_key' => $task->getMessage()->getPropRoutingKey()));
     $msgProperties = array('content_type' => Rhubarb::RHUBARB_CONTENT_TYPE, 'content_encoding' => $task->getMessage()->getContentEncoding(), 'priority' => $task->getMessage()->getPropPriority());
     $channel->basicPublish(new AmqpMessage((string) $task, $msgProperties), array('exchange' => $task->getMessage()->getPropExchange(), 'routing_key' => $task->getMessage()->getPropRoutingKey()));
     $channel->close();
     $channel = null;
 }
Esempio n. 3
0
 /**
  * @param \Rhubarb\Task $task
  */
 public function publishTask(\Rhubarb\Task $task)
 {
     $task->getMessage()->setContentEncoding(Rhubarb::CONTENT_ENCODING_UTF8);
     if (!$task->getMessage()->getPropRoutingKey()) {
         $task->getMessage()->setPropRoutingKey('celery');
     }
     if (!$task->getMessage()->getCorrelationId()) {
         $task->getMessage()->setCorrelationId($task->getId());
     }
     if (!$task->getMessage()->getReplyTo()) {
         $task->getMessage()->setReplyTo($task->getId());
     }
     $task->getMessage()->setPropDeliveryMode(2)->setPropDeliveryTag(2);
     $task->getMessage()->setBodyEncoding(Rhubarb::CONTENT_ENCODING_BASE64);
     $task->toArray();
     $this->getConnection()->lpush($task->getMessage()->getPropExchange(), (string) $task->getMessage());
 }