f9webltd/laravel-queue-check

粗略地检查您的Redis队列工作进程是否正在运行

1.2.4 2024-07-22 19:10 UTC

This package is auto-updated.

Last update: 2024-09-22 19:27:42 UTC


README

Latest Stable Version Scrutinizer coverage (GitHub/BitBucket) Scrutinizer code quality (GitHub/Bitbucket) Build Status StyleCI Status License

Laravel Redis Queue Check

一个简单粗糙的 Laravel控制台命令,用于确定您的Redis队列工作进程是否正在运行。

当命令确定您的进程 正在运行时,会触发事件 QueueCheckFailed

在幕后,该命令 ps aux 会运行以确定您期望的命令是否存在。

要求

PHP >= 7.2,Laravel >= 5.8。

安装

composer require f9webltd/laravel-queue-check

发布配置文件

vendor:publish --provider="F9Web\QueueCheck\CheckQueueServiceProvider"

文档

配置设置

配置非常基础,允许设置两个期望值。

processes

一个整数,应存在的所需进程数。

expected-output

应运行的目标命令。

一些示例

  • artisan queue:work redis
  • artisan horizon
  • php artisan horizon:work redis --delay=0 --memory=128 --queue=default --sleep=3 --timeout=60 --tries=3 --supervisor=abc:supervisor-1

特定性是可选的。

通常可以通过在命令行运行 ps aux | grep artisan 来确定输出。所以如果输出是

user+ 17981  0.0  0.4 384080 38544 ?        Ss   Jun12   0:31 php /home/user/artisan queue:work redis --queue=live --sleep=3 --tries=3
user+ 18004  0.0  0.4 384080 38548 ?        Ss   Jun12   0:31 php /home/user/artisan queue:work redis --queue=live --sleep=3 --tries=3
user+ 18027  0.0  0.4 384080 38548 ?        Ss   Jun12   0:31 php /home/user/artisan queue:work redis --queue=live --sleep=3 --tries=3

以下配置值可能适用

  • expected-output = artisan queue:work redis
  • processes = 3

在您的应用程序中使用

当期望的命令或所需的进程数未运行时,会触发事件 QueueCheckFailed

在您的应用程序中,您可以 监听该事件

定义事件监听器,在这种情况下是 QueueFailed

// App\Providers\EventServiceProvider

protected $listen = [
    \F9Web\QueueCheck\Events\QueueCheckFailed::class => [
        \App\Listeners\QueueFailed::class,
    ],
];

注册计划任务 f9web:queue-check

// App\Console\Kernel

protected function schedule(Schedule $schedule) 
{
    $schedule->command('f9web:queue-check')->everyThirtyMinutes();
}

事件返回导致命令失败的控制台输出,在下面的示例中,它只是被记录下来。当然,监听器可以执行任何所需操作,例如发送电子邮件或Slack通知

namespace App\Listeners;

use F9Web\QueueCheck\Events\QueueCheckFailed;

class QueueFailed
{
    public function __construct()
    {
        //
    }
    
    public function handle(QueueCheckFailed $event)
    {
        info('Failing', [
            'output' => $event->getOutput(),
        ]);
    }
}

注意:当运行Redis队列时,您的应用程序有很大几率会排队发送邮件。如果队列出现故障,通知电子邮件将被排队,邮件永远不会发送。如果发送电子邮件,请确保邮件没有被排队。如果使用“邮件可发送”对象,则可以省略Queueable特性。

贡献

欢迎任何想法。请随时提交任何问题或拉取请求。

测试

composer test

安全

如果您发现任何安全问题,请通过电子邮件 rob@f9web.co.uk 而不是使用问题跟踪器。

鸣谢

许可

MIT许可证(MIT)。有关更多信息,请参阅许可文件