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

mmucklo/queue-bundle

Symfony bundle for background job queues with worker commands, job scheduling, and pluggable backends. Offload time-consuming tasks and process them asynchronously using Doctrine, MongoDB, Redis, or other supported queue stores.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. mmucklo/queue-bundle is a Symfony bundle, not a Laravel package. It ships a Bundle class, DI extension, YAML configuration tree, compiler passes, and Symfony Console commands (dtc:queue:run, stalled-job recovery, stats). None of the Laravel service-provider, facade, or Illuminate\Queue\Queue contracts are implemented. Its architectural value is the abstraction: a transport-agnostic job interface over interchangeable backends (Doctrine ORM/MySQL, Doctrine ODM/Mongo, RabbitMQ, Beanstalkd, Redis, custom) with a persisted job status lifecycle (pending/running/success/failure) and pluggable serializers. That design is legitimate, but it duplicates a capability Laravel already owns natively through queue:work, failed-job tables, and Horizon.

Integration feasibility. Low as a direct dependency on a Laravel target. Options, cheapest first:

  1. Reuse the concept only — port the job-status and stalled-job-recovery pattern onto Laravel's native queue, queue:work --max-time, and failed-job tables. No new dependency, no lock-in.
  2. Bridge — pull in Symfony components and the bundle's DI extension inside Laravel, or run a sidecar Symfony console process against a shared DB/Redis. Requires two runtimes, duplicated configuration, and bespoke autowiring glue for job classes.
  3. Standalone use of transport classes — theoretically possible for the Mongo/ODM manager (no Laravel equivalent), but namespaced for the bundle and untested outside Symfony.

Technical risk. High, and it overshadows the composite score of ~8.5.

  • Symfony 2/3/4/5 ceiling implies a PHP 7.x/8.0-era codebase with no Symfony 6/7 or PHP 8.2+ assurance — a hard blocker against a modern Laravel 10/11 (PHP 8.1+) stack.
  • 0 dependents is the strongest available negative signal: no downstream production evidence, no community-forced bug fixes, no compatibility patches.
  • Bus factor 1, no evident security policy, no disclosed CI or release cadence. 120 stars is consistent with a dormant project.
  • Overlap, not differentiation: opportunity score 41.6. The only unique features are Doctrine ODM/Mongo persistence and a bundled dashboard — neither justifies the coupling.
  • Licensing is clean (MIT), so the risk is lifecycle and engineering, not legal.

Key questions to resolve before any commitment.

  1. What PHP/Symfony versions does the default branch actually support, and is there a tagged release in the last 18 months?
  2. Is there any Doctrine ODM/Mongo requirement our estate cannot meet with Laravel's native drivers? If not, the package has no unique value.
  3. Does the dashboard expose unauthenticated routes by default, and what is its authorization story?
  4. What is the documented behavior for in-flight jobs on worker termination — a bounded retry and stalled-job guarantee, or best-effort?
  5. Would we fork and own the code (security patching, upgrades) if upstream goes quiet?

Integration Approach

Stack fit. Poor as a dependency for Laravel — declare it incompatible and stop. Acceptable as a reference design. If we are operating or migrating a Symfony application, it fits existing container and console conventions and merits a short spike.

Migration path. Both directions argue against adoption:

  • Symfony → Laravel: do not port the bundle. Map its transports onto Laravel queue connections (database, redis, beanstalkd, sqs), convert job classes to ShouldQueue jobs, replace dtc:queue:run with queue:work under Supervisor, and replace the bundle dashboard with Horizon (Redis) or a small failed-jobs view. Parity is achievable in days.
  • Laravel → Symfony or greenfield Symfony: the bundle is a candidate only if Mongo/ODM persistence is mandatory; otherwise Symfony Messenger is the better-supported choice.

Compatibility. Unverified until proven by a spike. Pin PHP floor/ceiling, Doctrine ORM/ODM majors, Redis client (predis vs phpredis), and RabbitMQ/Beanstalkd protocol libraries. There is no published compatibility matrix, so the spike must lock exact versions and exercise the full worker lifecycle.

Sequencing (if a spike is approved).

  1. Confirm PHP/framework compatibility and that a maintainable release exists; otherwise reject.
  2. Stand up one non-critical, idempotent job (e.g., notification fan-out) on the least risky transport.
  3. Exercise failure paths: worker kill mid-job, poison message, transport outage, stalled-job recovery.
  4. Measure throughput and DB contention on the ORM transport under realistic concurrency.
  5. Only then approve a production pilot — with a documented fork-and-own exit plan.

Operational Impact

Maintenance. Effectively self-maintained. Expect to vendor or fork to keep it on a supported PHP branch, which turns a cheap dependency into a standing engineering liability with no upstream relief. Every framework upgrade becomes our patch.

Support. No vendor, no SLA, no active community to escalate to. Runbooks must be authored in-house, including dashboard semantics and stalled-job recovery. Compare against Horizon, which is first-party and documented.

Scaling. Transport-dependent and uneven. Redis and RabbitMQ scale horizontally with more workers; Beanstalkd is workable but operationally thin; the Doctrine ORM transport is the weak link — a SQL table as a queue invites row-lock contention, table bloat, and polling latency under load, and needs deliberate indexing, archival, and a retention job. Mongo/ODM avoids lock contention but adds an operational dependency we may not otherwise run.

Failure modes to design for.

  • Orphaned/stalled jobs — a crashed worker leaves rows in a running state; without the recovery command on a schedule, jobs silently never complete.
  • Duplicate execution — at-least-once semantics on requeue/visibility timeout; all jobs must be idempotent.
  • Poison messages — a job that always throws must hit a bounded retry and a terminal/dead-letter state, not loop.
  • Unbounded table/log growth — job records accumulate; without pruning, the queue store becomes an incident.
  • Silent worker death — Supervisor plus alerting on queue depth and oldest-pending age; the framework will not tell you.
  • Dashboard exposure — an unauthenticated admin surface is a data-leak path if routes are not explicitly gated.

Ramp-up. Symfony-fluent engineers need roughly a day to learn the job conventions and run command. Laravel-only engineers need materially longer: they must learn the bundle and the Symfony container while unlearning the Illuminate\Queue mental model. Documentation is README-grade, so real ramp-up cost is reading source.

Recommendation. Do not adopt as a Laravel dependency — the package is framework-mismatched, appears dormant, has zero production dependents, and overlaps with better-supported native tooling. Leverage it as a design reference: harvest the job-status lifecycle and stalled-job-recovery ideas into Laravel's native queue. Revisit only as an owned fork if a hard Doctrine ODM/Mongo requirement surfaces in an existing Symfony estate.

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/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
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route