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.
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:
queue:work --max-time, and failed-job tables. No new dependency, no lock-in.Technical risk. High, and it overshadows the composite score of ~8.5.
Key questions to resolve before any commitment.
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:
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.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).
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.
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.
How can I help you explore Laravel packages today?