1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- <?php
- namespace app\admin\job;
- use think\facade\Log;
- use think\queue\Job;
- class demoJob
- {
- /**
- * fire是消息队列默认调用的方法
- * @param Job $job 当前的任务对象
- * @param array|mixed $data 发布任务时自定义的数据
- */
- public function fire(Job $job, $data)
- {
- //通过这个方法可以检查这个任务已经重试了几次了
- //if ($job->attempts() > 3) {}
- //有效消息到达消费者时可能已经不再需要执行了
- /* if(!$this->checkJob($data)){
- $job->delete();
- return;
- }*/
- //执行业务处理
- if($this->doJob($data)){
- $job->delete();//任务执行成功后删除
- }/*else{
- //检查任务重试次数
- if($job->attempts() > 3){
- Log::channel('test')->record('234:'.$data);
- $job->delete();
- }
- }*/
- // 也可以重新发布这个任务
- //$job->release($delay); //$delay为延迟时间
- }
- /**
- * 根据消息中的数据进行实际的业务处理
- */
- private function doJob($data)
- {
- // 实际业务流程处理
- try {
- $data['status'] = rand(999);
- Log::channel('test')->record(json_decode($data));
- }catch (\Exception $exception){
- Log::channel('test')->record('345'.$exception->getMessage());
- }
- return true;
- }
- //任务失败执行的方法
- public function failed($data)
- {
- // ...任务达到最大重试次数后,失败了
- }
- }
|