/** * Send a message to the queue * * @param string $message * @param Zend_Queue|null $queue * @return Zend_Queue_Message * @throws Enterprise_Queue_Exception */ public function send($message, Zend_Queue $queue = null) { 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 Enterprise_Queue_Exception('Queue does not exist: ' . $queue->getName()); } $this->_queueTaskModel->setData(array('queue_id' => $this->_getQueueId($queue->getName()), 'handle' => md5(uniqid(rand(), true)), 'data' => $message, 'status' => Enterprise_Queue_Model_Queue_Task::TASK_STATUS_PENDING)); try { $this->_queueTaskModel->save(); } catch (Exception $e) { throw new Enterprise_Queue_Exception($e->getMessage(), $e->getCode(), $e); } $className = $queue->getMessageClass(); return new $className(array('queue' => $queue, 'data' => $this->_queueTaskModel->getData())); }
/** * Report failed task * * @param int $taskId * @return Enterprise_Queue_Model_Worker_Reporter_Native */ public function reportTaskFailed($taskId) { $this->_task->setStatus(Enterprise_Queue_Model_Queue_Task::TASK_STATUS_SKIPPED); $this->_task->save(); return $this; }