在项目开发的时候免不了要使用多队列分别处理不同的业务,可是laravel中文文档没有具体介绍如何配置多队列。下面我们就聊聊laravel框架中使用redis驱动,配置多队列以及supervisor守护进程。
1.新建多个Jobs下队列任务
2.queue.php配置文件
'default' => 'redis',
'redis' => [
'driver' => 'redis',
'connection' => 'default',
'queue' => 'default', //使用多队列时,这里是默认
'retry_after' => 90,
'block_for' => null,
],
3.业务指定分发队列任务使用 onQueue()
类似:a::dispatch($data)->onQueue('a'); b::dispatch($data)->onQueue('b');
4.当任务能正常推到redis时,运行多队列需要多终端。
例如:php artisan queue:work --queue=a php artisan queue:work --queue=b
5.supervisor配置也需要开多进程
比如:a、b 两个队列
[program:a]
process_name=%(program_name)s_%(process_num)02d
command=php /data/release/artisan queue:work redis --queue=a --sleep=3 --tries=3
autostart=true
autorestart=true
user=root
numprocs=5
redirect_stderr=true
stdout_logfile=/data/release/storage/logs/queue/a/a.log //队列响应日志路径
[program:b]
process_name=%(program_name)s_%(process_num)02d
command=php /data/release/artisan queue:work redis --queue=b --sleep=5 --tries=5
autostart=true
autorestart=true
user=root
numprocs=5
redirect_stderr=true
stdout_logfile=/data/release/storage/logs/queue/b/b.log
supervisor的安装和使用请自行百度,end;