checkDatabaseToSeeIfJobNeedToBeDone($data); if(! $isJobStillNeedToBeDone){ $job->delete(); return; } // 执行逻辑处理(即:你需要该消息队列做什么) $isJobDone = $this->doHelloJob($data); if ($isJobDone) { // 如果任务执行成功,记得删除任务 $job->delete(); } else { // 通过这个方法可以检查这个任务已经重试了几次了 if ($job->attempts() > 3) { $job->delete(); // 也可以重新发布这个任务 //$job->release(2); // $delay为延迟时间,表示该任务延迟2秒后再执行 } } } /** * 有些消息在到达消费者时,可能已经不再需要执行了 * @param $data 发布任务时自定义的数据 * @return bool 任务执行的结果 */ private function checkDatabaseToSeeIfJobNeedToBeDone($data){ return true; } /** * 根据消息中的数据进行实际的业务处理... * @param $data * @return bool */ private function doHelloJob($data) { // TODO 该处为实际业务逻辑,即:对消息中的数据进行处理 $model = new JobsTestModel(); $inData = [ 'uniqId' => uniqid(), 'time' => $data['ts'], 'content' => '队列成功的插入数据' ]; $res = $model->save($inData); if (! $res) { return false; } return true; } }