jeffersongoncalves/laravel-queue-worker
A lightweight Laravel package for running and managing queue workers without Supervisor. Start, stop, restart, and monitor workers through simple Artisan commands, making background job processing practical on shared hosting and minimal deployments.
laravel-queue-consumer installed in each environment. That is a fleet-wide supported-version matrix we now own; ^1.1 allowing 1.2.0 without requiring it means a stale composer.lock fails at runtime. Decide whether to pin, and add the consumer version to the compatibility contract.retry_after on the hub's queue connection must exceed the longest timeout any environment declares plus 60 seconds, or POST /api/jobs refuses those jobs. This belongs in environment-provisioning checklists and the deploy runbook, not just the README.OutdatedEnvironmentConsumerException converts an opaque Symfony message into the environment slug, its path, and the exact composer require to run. That is self-serve onboarding for environment owners and fewer escalations to the platform team.timeout: 0, negative timeouts, and timeout+margin ≥ retry_after now return 422 instead of running with wrong semantics. Moving these failures left is good, but it is a visible API behavior change for any consumer currently submitting such payloads — decide whether to announce it as a breaking change to integrators.failed_jobs names the environment rather than pcntl_alarm killing the worker and orphaning the child. Per-environment reliability metrics and MTTR both improve.Adopt when you already run Laravel queues and need per-environment (per-tenant or per-deployment) isolation of execution behind a central submit API; you want long-running jobs out-of-process without hand-rolling Process orchestration and retry_after arithmetic; and you can push laravel-queue-consumer:^1.2 to every environment deliberately.
Look elsewhere or wait when:
^1.2; a stale composer.lock keeps 1.1.x and every job fails with the --queue rejection.timeout: 0 / unbounded payloads. These are now rejected, so those jobs need a redesign before upgrading.jeffersongoncalves/* stack, and the failure mode above is exactly the kind of cross-package coupling that implies.Executives: 1.3.0 removes the hard 60-second ceiling that made the hub unusable for real workloads, unblocking roadmap items that were parked for lack of a runtime — no new infrastructure required. It also turns two classes of silent, expensive-to-diagnose failure into explicit, actionable errors, reducing platform-team triage time. The cost is a coordinated fleet upgrade of the queue consumer plus a retry_after audit before rollout.
Engineering: timeouts now propagate to the child Process; the hub job retains the timeout plus a 60-second margin so the child times out first and failed_jobs attributes the failure to the environment, instead of pcntl_alarm killing the worker and orphaning the child. Jobs queued before this version take the margin out of the child's share, since the outer payload is already in Redis and cannot be rewritten. New 422 validation rejects timeout: 0, negative timeouts, and any timeout+margin reaching retry_after (naming both numbers). OutdatedEnvironmentConsumerException matches stderr only — where the argument parser fails before the command runs — so job output quoting that text is not misclassified. Upgrade actions: every environment must require "jeffersongoncalves/laravel-queue-consumer": "^1.2" (an existing lock file will keep 1.1.x even under ^1.1), and retry_after must exceed the longest declared timeout plus 60 seconds before deploying.
How can I help you explore Laravel packages today?