* @version : HuoMp 1.0 */ namespace huolib\queue\job; use huomp\controller\order\OrderOut; use think\queue\Job; class OrderQrFire extends Fire { static $g_i = 0; /** * fire方法是消息队列默认调用的方法 * * @param Job $job 当前的任务对象 * @param array|mixed $data 发布任务时自定义的数据 */ public function fire(Job $job, $data) { self::$g_i++; $_is_job_done = $this->doJob($data); $runtime = round(microtime(true) - THINK_START_TIME, 10); echo $runtime.' '.self::$g_i; if ($_is_job_done) { //如果任务执行成功, 记得删除任务 $job->delete(); // print("Hello Job has been done and deleted"."\n"); } else { if ($job->attempts() > 3) { //通过这个方法可以检查这个任务已经重试了几次了 // print("Hello Job has been retried more than 3 times!"."\n"); $job->delete(); // 也可以重新发布这个任务 // print("Hello Job will be availabe again after 2s."."\n"); //$job->release(2); //$delay为延迟时间,表示该任务延迟2秒后再执行 } } } /** * 根据消息中的数据进行实际的业务处理 * * @param array $data 发布任务时自定义的数据 * * @return bool 任务执行的结果 */ public function doJob($data) { $_order_id = isset($data['order_id']) ? $data['order_id'] : ''; if (empty($_order_id) && !empty($data['mem_id']) && !empty($data['app_id'])) { $_mem_id = $data['mem_id']; $_app_id = $data['app_id']; $_rs = (new OrderOut())->genMemAppQrCodeQueue($_mem_id, $_app_id); } elseif (!empty($_order_id)) { $_rs = (new OrderOut())->genOrderQrQueue($_order_id); } else { $_rs = false; } return $_rs; } }