예제 #1
0
 /**
  * Send a message to the queue
  *
  * @param  string     $message Message to send to the active queue
  * @param  Zend_Queue $queue
  * @return Zend_Queue_Message
  * @throws Zend_Queue_Exception - database error
  */
 public function send($message, Zend_Queue $queue = null)
 {
     if ($this->_messageRow === null) {
         $this->_messageRow = $this->_messageTable->createRow();
     }
     if ($queue === null) {
         $queue = $this->_queue;
     }
     if (is_scalar($message)) {
         $message = (string) $message;
     }
     if (is_string($message)) {
         $message = trim($message);
     }
     if (!$this->isExists($queue->getName())) {
         throw new Zend_Queue_Exception('Queue does not exist:' . $queue->getName());
     }
     $msg = clone $this->_messageRow;
     $msg->queue_id = $this->getQueueId($queue->getName());
     $msg->created = time();
     $msg->body = $message;
     $msg->md5 = md5($message);
     // $msg->timeout = ??? @TODO
     try {
         $msg->save();
     } catch (Exception $e) {
         throw new Zend_Queue_Exception($e->getMessage(), $e->getCode(), $e);
     }
     $options = array('queue' => $queue, 'data' => $msg->toArray());
     $classname = $queue->getMessageClass();
     if (!class_exists($classname)) {
         Zend_Loader::loadClass($classname);
     }
     return new $classname($options);
 }
예제 #2
0
 /**
  * Push an element onto the end of the queue
  *
  * @param  mixed  $message message to send to the queue
  * @param  string $name    queue name
  * @return Zend_Queue_Message
  */
 public function send($message, $name = null)
 {
     if ($name !== null) {
         $this->setActiveQueue($name);
     } else {
         $name = $this->getActiveQueue();
     }
     $msg = $this->_message->createRow();
     $msg->queue_id = $this->getActiveQueue();
     $msg->body = $message;
     $msg->md5 = md5($message);
     try {
         $msg->save();
     } catch (Exception $e) {
         /**
          * @see Zend_Queue_Adapter_Exception
          */
         require_once 'Zend/Queue/Adapter/Exception.php';
         throw new Zend_Queue_Adapter_Exception($e->getMessage(), $e->getCode());
     }
     $config = array('queue' => $this, 'data' => $msg->toArray());
     Zend_Loader::loadClass($this->_msgClass);
     return new $this->_msgClass($config);
 }