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

Queue Bundle Laravel Package

symfony-bundles/queue-bundle

Symfony Queue Bundle integrates queue-based messaging into Symfony applications. It offers configuration and services for dispatching jobs, running worker consumers, and connecting supported queue backends with Symfony's service container and console commands, enabling background and asynchronous pr...

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — poor. symfony-bundles/queue-bundle is a Symfony bundle, not a Laravel package. It expects to be registered in a Symfony Kernel, booted through Symfony's dependency-injection container, and driven by a Symfony Console application. Laravel's runtime is an Illuminate container with service providers and an artisan command bus; it consumes Symfony components (HttpFoundation, Console, Routing) but has no bundle loader. There is no supported seam to register this bundle's services, configuration tree, and compiler passes inside a Laravel app without reimplementing Symfony's bundle extension machinery. The package also overlaps almost entirely with functionality Laravel already ships natively (Illuminate\Queue, workers, retries, queue:failed, Horizon), so adopting it creates a parallel queue subsystem rather than filling a gap.

Integration feasibility — low, and not worth the cost. A bridge is theoretically possible: instantiate the bundle's container extension manually, alias its services into Laravel's container, and run its consumer as a separate CLI entrypoint. In practice this means owning a compatibility shim against an unmaintained 2017 codebase, with no upstream to fix breakage. A cleaner option exists — run the package inside a small standalone Symfony worker application that shares the same broker (Redis/AMQP/database) with Laravel producers, with a versioned message contract between them. That preserves Laravel's queue for producers and isolates the Symfony dependency, but it adds a second runtime, a second deployment unit, and a schema contract to govern. That is a real architectural commitment for a 31-star package.

Technical risk — high. Last release October 2017 places it in the PHP 5.6/7.0–7.1 and Symfony 2.x/3.x era. It is almost certainly incompatible with PHP 8.x (deprecated constructs, removed functions, older type semantics) and with modern Symfony DI and Console APIs. There is no evidence of active maintenance, CI, security response, or a published support policy. MIT licensing is fine, but license is not the constraint — the constraint is that any CVE or PHP-version breakage becomes ours to patch in a fork. Dependency pinning will also conflict with a modern Laravel/Symfony component tree, and Composer resolution may force downgrades elsewhere in the monorepo.

Key questions.

  • What specific capability do we believe this package provides that Laravel's queue, Horizon, or a thin custom job does not?
  • What PHP and Laravel versions are in the target estate, and does a spike even install cleanly under Composer?
  • Is the requirement actually "durable queue with retries and a dead-letter path," in which case the answer is configuration, not a package?
  • Who owns the fork if we adopt it, and what is the acceptable patch latency for a security fix?
  • Are we willing to operate a second runtime (Symfony worker) in production, with its own deploy, config, and observability?
  • Does the broker contract between Laravel producers and any Symfony consumer need to be stable across teams, and who governs that schema?

Recommendation: do not integrate into the Laravel application. Evaluate only the sidecar-worker pattern, and only if a concrete capability gap is documented first.

Integration Approach

Stack fit — mismatch by construction. Laravel's queue stack is broker-agnostic through drivers and is configured in config/queue.php; jobs are plain classes with handle() methods, dispatched through the container, and supervised by queue:work under Supervisor, systemd, or Horizon. This bundle assumes Symfony's services.yaml/XML configuration, tagged services, compiler passes, and a Console command for consumption. Those two models do not compose; forcing them together produces a hybrid that is hard to reason about and harder to hand over.

Migration path — preferred: adopt the pattern, not the package. Port the concepts worth keeping — consumer loop structure, retry/backoff semantics, any dead-letter handling — into Laravel jobs and worker configuration. This is a one-to-two-week effort for a senior engineer, delivers native observability and failure handling, and leaves no abandoned dependency behind. It is also reversible.

Fallback: isolated worker. If a concrete capability gap survives scrutiny, deploy the bundle as a standalone Symfony worker:

  1. Define a versioned message envelope (JSON schema, correlation ID, attempt count, timestamp) and freeze it before writing either side.
  2. Laravel publishes to the broker; the Symfony worker consumes, acknowledges, and routes failures to a dead-letter queue.
  3. Containerize the worker separately; pin all its dependencies in its own composer.json.
  4. Instrument both sides with the same trace ID so a message can be followed end to end.

Compatibility. Expect to fork and patch before the worker runs on a supported PHP version. Budget for that explicitly; treat "it installs" as a milestone, not a given. Pin the fork to a specific commit and record the patch set in the repo.

Sequencing.

  1. Requirements spike (3–5 days): document the gap and confirm native Laravel options are insufficient.
  2. Composer/install feasibility check under target PHP (2–3 days). If it fails hard, stop.
  3. Contract definition and producer-side work in Laravel (1 week).
  4. Worker fork, patch, and containerize (2 weeks).
  5. Load and failure testing, then a limited production pilot behind a feature flag.

Gate each step on the previous one; the default outcome should be to stop.

Operational Impact

Maintenance. This is the dominant cost. An unmaintained package from 2017 means we own every future fix: PHP upgrades, Symfony component changes, security patches, broker client library drift. Estimate a standing 10–20% of one engineer's time during platform-upgrade cycles, plus unplanned work when a base image or runtime moves. Under the sidecar pattern the blast radius is contained to one container, but the ownership does not disappear.

Support. There is no vendor, no active maintainer, and a small enough community that issue response should be assumed to be zero. Internal runbooks, an on-call owner, and a documented fork procedure are prerequisites, not nice-to-haves.

Scaling. Expect single-process consumer workers with limited concurrency controls. Horizontal scale means more containers behind a process manager, which is workable but requires explicit configuration for prefetch, concurrency, and graceful shutdown. There is no equivalent of Horizon's dashboard, so throughput and backlog visibility must be built or bought separately.

Failure modes. The dangerous ones are quiet: a worker that dies without alerting and leaves a growing backlog; poison messages that cycle without reaching a dead-letter path; retries that duplicate side effects because the consumer is not idempotent; clock and visibility-timeout mismatches between producers and consumers; and, most seriously, a fork that silently diverges from the broker client's expectations after a dependency bump. Each needs a monitor, an alert, and a documented recovery step before go-live.

Ramp-up. The team is fluent in Laravel queues; this introduces Symfony DI configuration, bundle conventions, and a second runtime. Realistic ramp-up is two to three weeks before an engineer can debug a stuck consumer unaided, and the knowledge will be thin — likely one or two people. That is a bus-factor risk on a component that sits in the critical path of asynchronous work.

Bottom line for a TPM: the package does not fit the stack, is not maintained, and duplicates capability we already have. The defensible options are to close the request with a documented "use native Laravel queue" decision, or to fund the sidecar pattern as a time-boxed, gated initiative with a named owner and an explicit exit criterion. Anything else transfers long-tail risk to the team without a matching benefit.

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.
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin