本文共 1641 字,大约阅读时间需要 5 分钟。
首先看一下目录结构
话不多说 上代码
Login控制器文件class Login extends BaseController{ public function login() { if (request()->isPost()) { // 接收账号密码 $params = paramsTrim(request()->param()); // 查询用户信息 $user ['userID'] = 1; // 登录消息队列文件所在 $loginExpress = 'app\job\Login'; // 队列的名称 这个会存储到redis里 $loginQueueName = 'adminLoginQueue'; // 队列参数 $loginQueueParams = ['name' => $params['name'], 'password' => $params['password'],'accessTokenName' => $params['name'].'accessToken'.$user['userID']]; // 即时推送队列 延时推送是later $pushTask = Queue::push(\app\login\controller\job\Login::class,$loginQueueParams,$loginQueueName); if ($pushTask !== false) { echo '已经启动'; } else { echo 'Oops, something went wrong.'; } } }
Login队列文件
delete(); return; } // 执行任务 $consumerLogin = $this->consumerLogin($data); // 如果执行成功 删除任务 if ($consumerLogin) { $job->delete(); return; } else { // 否则 检查执行次数 如果已经重试3次 if ($job->attempts() > 3){ // 通过这个方法可以检查这个任务已经重试了几次了 // 删除任务 执行失败 print("Hello Job has been retried more than 3 times!"." \n"); $job->delete(); return; } } } // 消费者 public function consumerLogin($data) { //这里做一些自定义的操作 例如发送个邮件 短信什么的 if (true) { return true; } return false; }}
转载地址:http://zqco.baihongyu.com/