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