Ver código fonte

[REVIEW] Further review of Zend_Queue; adds flexibility in message types and fixes issue with missing "name" option in constructor

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@16939 44c647ce-9c0f-0410-b52a-842ac1e357ba
matthew 16 anos atrás
pai
commit
7c3eec2f8b

+ 5 - 7
library/Zend/Queue.php

@@ -246,7 +246,10 @@ class Zend_Queue implements Countable
         $this->_adapter = $adapter;
         $this->_adapter = $adapter;
 
 
         $this->_adapter->setQueue($this);
         $this->_adapter->setQueue($this);
-        $this->_setName($this->getOption(self::NAME));
+
+        if (null !== ($name = $this->getOption(self::NAME))) {
+            $this->_setName($name);
+        }
 
 
         return $this;
         return $this;
     }
     }
@@ -404,17 +407,12 @@ class Zend_Queue implements Countable
     /**
     /**
      * Send a message to the queue
      * Send a message to the queue
      *
      *
-     * @param  string             $message message
+     * @param  mixed $message message
      * @return Zend_Queue_Message
      * @return Zend_Queue_Message
      * @throws Zend_Queue_Exception
      * @throws Zend_Queue_Exception
      */
      */
     public function send($message)
     public function send($message)
     {
     {
-        if (!is_string($message)) {
-            require_once 'Zend/Queue/Exception.php';
-            throw new Zend_Queue_Exception('$message is not a string');
-        }
-
         return $this->getAdapter()->send($message);
         return $this->getAdapter()->send($message);
     }
     }
 
 

+ 1 - 1
library/Zend/Queue/Adapter/AdapterInterface.php

@@ -116,7 +116,7 @@ interface Zend_Queue_Adapter_AdapterInterface
     /**
     /**
      * Send a message to the queue
      * Send a message to the queue
      *
      *
-     * @param  string $message Message to send to the active queue
+     * @param  mixed $message Message to send to the active queue
      * @param  Zend_Queue|null $queue
      * @param  Zend_Queue|null $queue
      * @return Zend_Queue_Message
      * @return Zend_Queue_Message
      */
      */

+ 1 - 1
library/Zend/Queue/Adapter/Apachemq.php

@@ -259,7 +259,7 @@ class Zend_Queue_Adapter_Apachemq extends Zend_Queue_Adapter_AdapterAbstract
         $frame->setCommand('SEND');
         $frame->setCommand('SEND');
         $frame->setHeader('destination', $queue->getName());
         $frame->setHeader('destination', $queue->getName());
         $frame->setHeader('content-length', strlen($message));
         $frame->setHeader('content-length', strlen($message));
-        $frame->setBody($message);
+        $frame->setBody((string) $message);
         $this->_client->send($frame);
         $this->_client->send($frame);
 
 
         $data = array(
         $data = array(

+ 7 - 1
library/Zend/Queue/Adapter/Db.php

@@ -285,7 +285,13 @@ class Zend_Queue_Adapter_Db extends Zend_Queue_Adapter_AdapterAbstract
             $queue = $this->_queue;
             $queue = $this->_queue;
         }
         }
 
 
-        $message = trim($message);
+        if (is_string($message)) {
+            $message = trim($message);
+        } elseif (is_scalar($message)) {
+            $message = (string) $message;
+        } else {
+            $message = serialize($message);
+        }
 
 
         if (!$this->isExists($queue->getName())) {
         if (!$this->isExists($queue->getName())) {
             require_once 'Zend/Queue/Exception.php';
             require_once 'Zend/Queue/Exception.php';

+ 2 - 1
library/Zend/Queue/Adapter/Memcacheq.php

@@ -238,7 +238,8 @@ class Zend_Queue_Adapter_Memcacheq extends Zend_Queue_Adapter_AdapterAbstract
             throw new Zend_Queue_Exception('Queue does not exist:' . $queue->getName());
             throw new Zend_Queue_Exception('Queue does not exist:' . $queue->getName());
         }
         }
 
 
-        $data = array(
+        $message = (string) $message;
+        $data    = array(
             'message_id' => md5(uniqid(rand(), true)),
             'message_id' => md5(uniqid(rand(), true)),
             'handle'     => null,
             'handle'     => null,
             'body'       => $message,
             'body'       => $message,