Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Pqueue Bundle Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. This release is a Symfony bundle wrapping michel/pqueue, not a Laravel package. That is the single most important finding for stack-fit purposes: if the target application is Laravel, this release provides no service provider, no config/pqueue.php, no Artisan command, and no Laravel container bindings. It assumes Symfony's bundle/config/DI conventions (config/packages/pqueue.yaml, autoconfigured services, console commands). Fit against a Laravel codebase is therefore effectively zero out of the box, and would require an adapter layer we would own and maintain.

Integration feasibility. Within a Symfony application the surface area is small and conventional: YAML transport configuration, handler discovery via configured sources/classes, injectable Dispatcher and Consumer services, and a pqueue:worker:run console command with memory/time-limit options. This is a comprehensible, low-ceremony contract that a mid-level engineer can wire up in under a day. The feasibility problem is not complexity, it is maturity and the absence of a documented public API.

Technical risk. High, driven by three factors. First, 0.0.1-alpha signals no API stability guarantees — semver at 0.x permits breaking changes in any patch, and the config schema, service IDs, and command name/options are all plausible churn points. Second, the default transport is Filesystem, which is a development convenience rather than a production queue; it implies local-disk coupling that will not survive horizontal scaling or containerized/ephemeral filesystems. Third, the bundle is a thin integration layer over a third-party library, so our exposure is the union of two projects' maintenance risk, and the alpha stage suggests neither has been battle-tested at volume.

Key questions.

  • Is our target stack actually Laravel? If so, this release is out of scope and the assessment should be reframed around a Laravel adapter or an alternative package.
  • What production transports does michel/pqueue support beyond Filesystem, and are any of them durable and multi-consumer safe?
  • What is the intended stability and release cadence for the 0.x line, and is there a stated path to 1.0?
  • How are handler failures, retries, dead-lettering, and visibility timeouts handled — the release notes are silent on all of these?
  • Is michel/pqueue funded or single-maintainer? What is the issue/response track record?
  • What are the memory/time-limit semantics of pqueue:worker:run — graceful drain or hard kill mid-job?

Integration Approach

Stack fit. Conditional. Proceed only if the target is Symfony 5.4+/6.x/7.x with the standard bundle and DI conventions, and only for non-critical workloads initially. If the target is Laravel, treat this release as not applicable and do not attempt to force it through a bridge; the effort saved by adopting the library is smaller than the effort of owning a Laravel shim.

Migration path. There is nothing to migrate from, so this is a greenfield adoption, which is the favorable case. Adopt behind our own thin application-level interface (a QueueDispatcher port plus a worker entrypoint) rather than letting Dispatcher/Consumer types leak into domain code. That keeps the alpha dependency at one seam and makes a later swap to Symfony Messenger — the natural incumbent in a Symfony stack — a contained change rather than a refactor.

Compatibility. Verify PHP version constraints and Symfony component ranges against our pinned versions before anything else; an alpha bundle frequently lags current Symfony minors. Confirm compatibility with our dependency injection compilation (autoconfiguration of handlers depends on correct tags/interfaces), our config cache warmup, and our deployment model — particularly whether the Filesystem transport's storage path is a writable, persistent volume in every environment.

Sequencing.

  1. Spike: stand up the bundle in a scratch Symfony app, run one handler end-to-end with the Filesystem transport, and record the real config schema and service IDs (do not rely on the release notes as API documentation).
  2. Decide the production transport; if the only viable option is Filesystem, stop and select an alternative.
  3. Build the internal port/adapter seam and land a single low-risk, idempotent job in production.
  4. Only then expand to additional handlers, with retry/idempotency conventions established first.

Operational Impact

Maintenance. We inherit a pre-1.0 dependency with an undocumented API, so expect to absorb breaking changes on upgrade. Budget for pinning the exact version, reading diffs before bumps, and maintaining the adapter seam as the stable surface. Cost is modest while the seam is small; it grows quickly if the queue becomes load-bearing.

Support. No commercial support is implied. Escalation is to upstream maintainers via their issue tracker, with no SLA. Internally, one engineer should be named owner of the integration, and the adapter seam plus a documented runbook should exist before production traffic. If the library stalls, our fallback is a rewrite of the adapter against Symfony Messenger — cheap if the seam held, expensive if it did not.

Scaling. The Filesystem transport is a hard ceiling: it presumes a shared, writable, POSIX-compatible filesystem, which breaks on multi-node container deployments, is sensitive to inode and lock contention, and offers no consumer coordination guarantees we can reason about. We should assume single-node operation until a durable transport is proven. Worker concurrency is similarly uncharacterized — no documented guidance on running multiple pqueue:worker:run processes safely.

Failure modes. The release notes are silent on the failure surface, which is itself a risk finding. Unanswered: what happens to an in-flight job when a worker hits its memory or time limit mid-execution; whether jobs are retried and with what backoff; whether poison messages are quarantined or loop forever; what observability exists beyond console output; and whether a crash between dequeue and completion loses the job. Plan to answer these empirically in the spike, and assume no structured metrics or tracing integration until proven otherwise — we will likely need to instrument the worker ourselves.

Ramp-up. Low for a Symfony-fluent engineer — the concepts are standard and the surface is a YAML file plus a console command, roughly half a day to first working job. The cost is not learning the API but de-risking the unknowns above; allocate spike time for failure-mode testing rather than API familiarization. For a Laravel-only team, ramp-up is effectively undefined because the package does not target their stack.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
adachsoft/api-version-bundle