michel/pqueue-bundle
A priority queue bundle for Laravel/PHP that lets you push jobs with weighted priorities and process the most important work first. Includes queue driver integration, configurable priority levels, and simple APIs for scheduling and managing background tasks.
pqueue:worker:run command exposes memory-limit and time-limit options, which supports defining SLOs and operational runbooks — worker recycling, restart strategy, and container sizing — as explicit product/ops commitments rather than implicit assumptions.Consider it when:
michel/pqueue, not a Laravel package) and want queueing with minimal new vendor footprint.config/packages/pqueue.yaml — so adding a job type is a config change rather than bespoke wiring.Look elsewhere when:
0.0.1-alpha means no stability guarantees, likely no deprecation policy, and API churn should be assumed. Do not put revenue-critical or exactly-once workloads on it.To executives: This is a small, low-cost enabler that lets us run work in the background — emails, exports, integrations — without buying queue infrastructure or signing a vendor contract. It is a deliberate "keep the option open" move: the transport is a configuration setting, so if we outgrow it we can swap in a managed service without rewriting the features built on top. The trade-off to state plainly: it is an alpha (0.0.1), suitable for internal tools and early features, not for revenue-critical paths. Recommend funding it as an experiment with a defined review point tied to volume and reliability thresholds.
To engineering: This release integrates michel/pqueue into Symfony with four concrete capabilities: transport configuration (filesystem by default) in config/packages/pqueue.yaml; automatic handler discovery and registration from configured sources and classes; Dispatcher and Consumer exposed as DI services; and a pqueue:worker:run console command supporting memory-limit and time-limit for worker lifecycle management. The integration is thin and idiomatic — adopt it if you want queueing with almost no new concepts. Be explicit about what is not here: no retries/backoff, no delayed or scheduled jobs, no dead-letter handling, no metrics or dashboard, and no stability guarantee at 0.0.1-alpha. Recommended posture: isolate dispatch behind our own interface, keep job handlers side-effect-idempotent, wrap the worker in a supervisor with restart policy, and instrument logging ourselves from day one so a transport swap or an upgrade later is a contained change. Flag that this is a Symfony integration — if the target service is Laravel, we should use the framework's native queue instead.
How can I help you explore Laravel packages today?