企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
首先在.env中找到 ~~~ QUEUE_CONNECTION=redis 此项改为redis ~~~ 开始创建队列类 ``` php artisan make:job TestJob ``` 会再app\Jobs目录下创建好 ``` <?php namespace App\Jobs; use Illuminate\Bus\Queueable; use Illuminate\Queue\SerializesModels; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Support\Facades\Log; class TestJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; /** * Create a new job instance. * * @return void */ public function __construct() { // } /** * Execute the job. * * @return void */ public function handle() { Log::info('test_job',['time'=>time()]); } } ``` 然后去执行这个类 ``` ~~~ echo '执行了队列'; TestJob::dispatch(); #如果有参数就是构造方法中传入的 直接 TestJob::dispatch(...$data); 这样就是带参数的 ~~~ ``` 执行中可能会报错 ``` Class 'Predis\Client' not found ``` 我使用的是.5.8那么执行安装扩展 ``` composer require predis/predis:1.* ``` 安装完成后再试 那么会在redis中发现list的key ![](https://img.kancloud.cn/10/80/1080eddac5f37acbcf09753df4b38b0e_1607x168.png) ### 怎么去消费? ~~~ php artisan queue:work [2022-03-24 14:07:29][9VIifM3ywuUjO0QIHZJkSsi8nMDrsGiw] Processing: App\Jobs\TestJob [2022-03-24 14:07:29][9VIifM3ywuUjO0QIHZJkSsi8nMDrsGiw] Processed: App\Jobs\TestJob ~~~ 这样便消费了 redis中的key也会随之消失 ____ #### 温馨提示 一般在服务器中使用 **supervisor ** 来管理 队列,如果使用 `php artisan queue:work` 消费的话,每次修改了队列类需要重启一下服务,不然一直都是运行之前的。虽然有 `php artisan queue:listen` 不用重启 但是都是使用的`php artisan queue:work` 命令。