webparking/laravel-queue-ensurer

此Composer包提供了一个Laravel队列确保器。

1.3.0 2020-09-10 10:24 UTC

This package is auto-updated.

Last update: 2024-08-29 04:54:46 UTC


README

Laravel队列确保器

Build Status Quality score Code coverage

此包提供了一个命令(queue:ensure-processes),允许从Laravel调度运行Laravel队列工作进程(queue:work)。这允许cronjob确保配置的队列工作进程正在运行。它消除了需要像supervisord这样的进程管理器的需求,这种进程管理器并非在所有生产环境中都可用(例如,在处理DirectAdmin或大多数其他服务器控制面板时)。

可以配置多个队列,并为每个队列配置所需进程的数量(这使得并行运行多个作业成为可能)。这样做,可以在项目的代码库中拥有队列配置。

此包不关心您使用哪些队列驱动程序,queue:restart仍然按正常工作。

安装

composer require webparking/laravel-queue-ensurer

默认情况下,queue:ensure-processes命令配置为每分钟运行一次,确保默认队列有一个工作进程。所以如果您只想要这些,那就没问题。

配置

您可以通过运行php artisan vendor:publish --provider="Webparking\QueueEnsurer\ServiceProvider" --tag="config"将配置文件发布到您的项目中。

有关可配置选项的文档可以在配置文件中找到。

工作原理

队列确保器通过保持已启动的进程ID(PID)的缓存来工作。每次确保器运行时,它都会这样做

  1. 从缓存中删除已停止进程的PID。这些进程可能是由服务器重启、queue:restart或其他原因停止的。
  2. 杀死不再配置的队列的进程,并从缓存中删除它们的PID。当队列以前被配置为具有进程,但现在不再配置时。
  3. 杀死不再需要的进程,并从缓存中删除它们的PID。当配置的进程数少于运行进程数时。
  4. 启动新进程,并将它们的PID添加到缓存中。当配置的进程数多于运行进程数时。

这意味着确保器不会考虑它没有启动的任何进程。

对于PID缓存,确保器使用JSON文件(storage/app/queue-listener-pids.json)而不是Laravel缓存机制。如果队列确保器使用Laravel缓存,并且缓存被清除(php artisan cache:clear),那么确保器将不再知道正在运行的进程。结果会导致它启动新进程,而不杀死旧的进程。

贡献和开发

我们很高兴接受拉取请求或问题。

在开发过程中,您可以通过运行composer test来执行所有代码质量检查和测试。

未来功能

这是我们可能添加的功能。我们目前没有具体需求,但我们认识到它们的实用性,并在我们有空闲时间时添加它们。如果您或您的项目需要这些未来功能中的任何一个或多个,请提交PR或创建问题。

  • 测试与Lumen的兼容性

许可和贺卡软件

此软件是开源的,并使用MIT许可

如果您在日常开发中使用此软件,我们非常愿意收到您家乡的一张明信片。

请寄至:荷兰,卡佩勒阿恩德伊塞尔,Webparking BV,Cypresbaan 31a,2908 LT