Laravel 中使用 PM2 管理多个队列

2023-05-31 13:31:40 浏览数 (4)

如果把队列的这部分也写到代码里,无论从部署还是日后维护都是方便的。

接着上一篇的思路,要在 Laravel 中使用 PM2 管理多个队列,该如何操作呢

  1. 创建多个队列

使用 php artisan queue:table 命令创建 Laravel 的队列表。然后使用 php artisan make:job 命令创建新的队列任务类,例如:

代码语言:shell复制
php artisan make:job ProcessInvoice

在这个例子中,我们将使用名为 ProcessInvoice 的任务类来处理队列中的发票。

接下来,您可以使用 queue() 方法将任务添加到指定的队列中。例如:

代码语言:php复制
ProcessInvoice::dispatch($invoice)->onQueue('invoices');

在这个例子中,我们将 ProcessInvoice 任务添加到名为 invoices 的队列中。

  1. 修改 pm2.config.js 配置文件

在您的 Laravel 项目根目录中,打开 pm2.config.js 文件,并将以下内容添加到 apps 数组中:

代码语言:javascript复制
{
    name: "Invoices Queue",
    script: "artisan",
    args: "queue:work invoices --tries=3",
    watch: true,
    ignore_watch: ["storage"],
    autorestart: true,
    env: {
        APP_ENV: "production"
    }
},
{
    name: "Payments Queue",
    script: "artisan",
    args: "queue:work payments --tries=3",
    watch: true,
    ignore_watch: ["storage"],
    autorestart: true,
    env: {
        APP_ENV: "production"
    }
}

在这个例子中,我们定义了两个不同的 queue:work 进程,一个用于名为 invoices 的队列,另一个用于名为 payments 的队列。您可以根据自己的需求添加任意数量的队列。

  1. 启动 PM2 进程

使用以下命令启动 PM2 进程:

代码语言:shell复制
pm2 start pm2.config.js

现在,您可以在 PM2 中查看多个队列的运行情况,并且每个队列都将被单独管理和监视。

0 人点赞