Laravel 队列

本文主要讨论关于 Laravel 项目中使用 redis 队列服务相关的问题

启用队列

开启 redis 服务。
修改 .env

QUEUE_DRIVER=redis

Horizon

可使用 Laravel Horizon 提供的仪表板和代码驱动的配置系统

安装

composer require laravel/horizon

具体可参考文档:
https://laravel.com/docs/6.x/horizon
https://learnku.com/docs/laravel/5.7/horizon/2308

安装完成后可通过 http://项目网址/horizon 查看队列。

Supervisor

使用 Supervisor 来监听队列服务的进程。
本文推荐使用宝塔安装 Supervisor管理器,添加守护进程
https://www.bt.cn/bbs/thread-34611-1-1.html

新建 sup.sh 文件,并执行 chmod +x sup.sh

#!/bin/bash
php /项目目录/artisan horizon

同服务器多队列

在一台服务器上,多个 Laravel 应用使用 queue 队列时会互串。解决方案如下:

.env 文件中增加:

HORIZON_PREFIX=xxx
QUEUE_NAME=xxx

配置文件 queue.php 中修改 quenu

'redis' => [
    'driver' => 'redis',
    'connection' => 'default',
    'queue'  => env('QUEUE_NAME', 'default'),
    'retry_after' => 90,
],

配置文件 horizon.php 中修改 quenu

'supervisor-1' => [
    'connection' => 'redis',
    'queue' => [env('QUEUE_NAME', 'default')],
    'balance' => 'simple',
    'processes' => 10,
    'tries' => 3,
],

其他

配置文件更新:
env 文件更新后,需要重启队列,重新缓存配置文件。

清除队列:

redis-cli #进入脚手架
flushall #清空redis的数据

重启队列(当队列有更新时需执行):

php artisan queue:restart

结束队列进程(当队列更新时重启队列没作用可执行)

php artisan horizon:terminate

 4,804 total views,  2 views today

Revisions

There are no revisions for this post.

No comments yet.

发表评论