代码

 // 执行一个异步队列redis去去执行这个方法


GenerateWalletAddress::dispatch($user->id)->onQueue('getnewaddress')->onConnection('redis');

任务方法示例

 

<?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 App\Models\UsersWallet;

class GenerateWalletAddress implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

/**
* Create a new job instance.
*
* @return void
*/
protected $userid;
public function __construct($userid)
{
//
$this->userid = $userid;
}

/**
* Execute the job.
*
* @return void
*/
public function handle()
{

try {
defined('IS_FORMAL_HOST') or define('IS_FORMAL_HOST', 1);
$address = new UsersWallet;
$address->add_address($this->userid, 1);
} catch (\Exception $e) {
debug_log('script/address.log', $e->getMessage());
}
}
}

 

执行 命令行

php artisan queue:work redis --queue getnewaddress --tries=1

注: 调用getnewaddress任务执行redis queue队列
tries 失败次数一次

下面是使用 Supervisor 

这段来着laravel 官方文档

Supervisor 配置

安装 Supervisor

Supervisor 是 Linux 操作系统下中的一个进程监控器,它可以在 ​​queue:work​​ 挂掉时自动重启之。在 Ubuntu 上安装 Supervisor,你可以使用如下命令:

sudo apt-get install supervisor

{小提醒} 如果觉得配置 Supervisor 难于登天,可以考虑使用 ​​Laravel Forge​​,它将自动为你的 Laravel 项目安装和配置 Supervisor。

配置 Supervisor

Supervisor 的配置文件通常位于 ​​/etc/supervisor/conf.d​​​ 目录下。在该目录中,你可以创建任意数量的配置文件,用来控制 supervisor 将如何监控你的进程。例如,创建一个 ​​laravel-worker.conf​​​ 文件使之启动和监控一个 ​​queue:work​​ 进程:

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/forge/app.com/artisan queue:work sqs --sleep=3 --tries=3
autostart=true
autorestart=true
user=forge
numprocs=8
redirect_stderr=true
stdout_logfile=/home/forge/app.com/worker.log

在这个例子中,​​numprocs​​​ 指令将指定 Supervisor 运行 8 个 ​​queue:work​​​ 进程并对其进行监控,如果它们挂掉就自动重启它们。你应该更改 ​​command​​​ 选项中的 ​​queue:work sqs​​ 部分以表示你所需的队列连接。

启动 Supervisor

配置文件创建完毕后,你就可以使用如下命令更新 Supervisor 配置并启动进程了:

sudo supervisorctl reread

sudo supervisorctl update

sudo supervisorctl start laravel-worker:*

 

安装好后说说用法

我的配置文件位于 /etc/supervisor/conf.d

laravel queue(异步队列) 管理队列工具 Supervisor_redis

编写 配置文件 cat htapp_getnewaddress.conf

[program:htapp_getnewaddress]
process_name=%(program_name)s_%(process_num)02d
command= php /data/wwwroot/test.hamdantoken.io/HamdanTokenApp/artisan queue:work redis --queue=getnewaddress --sleep=3 --tries=1 --daemon
autostart=true
autorestart=true
user=root
numprocs=3
redirect_stderr=true
stdout_logfile=/data/wwwlogs/htapp_getnewaddress.log

注: 配置任务方法 program


编辑你的配置文件laravel-worker.conf

添加启动

command= php /data/wwwroot/test.hamdantoken.io/HamdanTokenApp/artisan queue:work redis --queue=getnewaddress  --sleep=3 --tries=1 --daemon
队列方法 错误重发一次

supervisorctl update

重新加载 配置 htapp_getnewaddress

supervisorctl update htapp_getnewaddress

启动这个方法 

supervisorctl status htapp_getnewaddress

查看所有的 队列进程

ps -ef | grep queue

结果 

laravel queue(异步队列) 管理队列工具 Supervisor_配置文件_02

 

好了,这样就Supervisor管理的三个进程的队列