f9webltd / laravel-queue-check
粗略地检查您的Redis队列工作进程是否正在运行
1.2.4
2024-07-22 19:10 UTC
Requires
- php: ^7.2 | ^8.0
- illuminate/config: 5.8.* || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0
- illuminate/console: 5.8.* || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0
- illuminate/support: 5.8.* || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0
- symfony/process: ^4.0|^5.0|^6.0|^7.0
Requires (Dev)
- orchestra/testbench: >=3.8
- phpunit/phpunit: ^7.0|^8.0|^9.0
README
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)。有关更多信息,请参阅许可文件。