think-queue队列不执行

浏览:386 发布日期:2019/04/30 分类:ThinkPHP6专区 关键字: ThinkPHP6 think-queue 队列 redis queue 消息队列
Redis驱动。队列添加到redis但是不执行
job文件内容如下:namespace app\job;

use app\log\Log;
use think\queue\Job;

class Test{

    public function fire(Job $job, $data){
        //这里执行具体的任务
        if ($job->attempts() < 3) {
            //通过这个方法可以检查这个任务已经重试了几次了
            $insertData = [
                'request' => json_encode($data),
                'type' => 'fire',
                'time' => Log::getMsecTime(),
            ];
            $data = [];
            foreach ($insertData as $key=>$val){
                $data[] = '`'.$key.'` = '.'\''.$val.'\'';
            }
            $insertStr = implode(',', $data);
            $sql = 'INSERT INTO `text` SET '.$insertStr;
            if(!app('db')->execute($sql)){
                self::failed($data);
//                $job->release(1); //$delay为延迟时间
            }
        }
        //如果任务执行成功后 记得删除任务,不然这个任务会重复执行,直到达到最大重试次数后失败后,执行failed方法
        $job->delete();
    }

    public function failed($data){
        // ...任务达到最大重试次数后,失败了
        $insertData = [
            'request' => json_encode($data),
            'type' => 'failed',
            'time' => Log::getMsecTime(),
        ];
        $data = [];
        foreach ($insertData as $key=>$val){
            $data[] = '`'.$key.'` = '.'\''.$val.'\'';
        }
        $insertStr = implode(',', $data);
        $sql = 'INSERT INTO `text` SET '.$insertStr;
        app('db')->execute($sql);
    }

}
使用队列方式一:Queue::push('app\job\Test', $data = '111', $queue = 'redis');方式二:\queue('app\job\Test', '111');runtime显示报错信息:[2019-04-30T15:47:40+08:00][ error ] [0]Argument 2 passed to think\queue\Worker::process() must be an instance of think\queue\Job, null given, called in E:\Xampp\WWW\tp\vendor\topthink\think-queue\src\queue\Worker.php on line 261[E:\Xampp\WWW\tp\vendor\topthink\think-queue\src\queue\Worker.php:296]
最佳答案
评论( 相关
后面还有条评论,点击查看>>