laravel8 + redis 队列
执行命令 生成job: php artisan make:job 自定义名称
修改queue.php 配置文件
'redis' => [
'driver' => 'redis',
'connection' => 'queue', 【databases.php中单独配置一个redis的链接 名为queue】
'queue' => env('REDIS_QUEUE', 'default'),
'retry_after' => 90,
'block_for' => null,
'after_commit' => false,
],
databases.php配置文件:
'queue' => [
'url' => env('REDIS_URL'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', '6379'),
'database' => env('REDIS_DB', '4'),
]
<?php namespace App\Jobs; use App\Common\Status; use App\Http\Logic\Admin\JobLogic; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldBeUnique; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Redis; class SendEmail implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; private $data; /** * Create a new job instance. * @param $data */ public function __construct($data) { $this->data = $data; } /** * Execute the job. * * @return void */ public function handle() { var_dump($this->data); } }
App\Jobs\SendEmail::dispatch(["noteId" => $noteId, "source" => 1, "annex" => $annex, "jid" => $jid]) // ->onConnection('redis'); // 指定redis链接 ->onQueue("test"); // 指定队列名称 ->delay(now()->addMinutes(2)); // 延时时间
开启监听队列: php artisan queue:work redis --queue=test --tries=3 // 指定redis 队列名称 和失败后最大尝试次数3次
一开始玩了几把默认的 一直无法开始消费和投递 之后加上
->onConnection('redis'); 才算成功 后面有空再研究下
官方说明地址: https://learnku.com/docs/laravel/8.x/queues/9398
作者地址:https://www.cnblogs.com/G921123/
创作也有乐趣 知识分享 转载注明出处 相互理解 谢谢!
创作也有乐趣 知识分享 转载注明出处 相互理解 谢谢!