mcfedr/sqs-queue-driver-bundle
Symfony bundle that lets you use Amazon SQS as your queue driver, so you can offload background jobs to AWS without rewriting your existing messaging code.
Architecture fit — this is the headline problem. Despite being filed under a Laravel/PHP evaluation request, mcfedr/sqs-queue-driver-bundle is a Symfony bundle, not a Laravel package. It registers through Symfony's bundles.php / DependencyInjection/*Extension mechanism and exposes a Symfony Console worker command. Laravel has no bundle registration path, no ContainerBuilder compiler passes, and no Kernel::registerBundles(). There is no ServiceProvider, no config/queue.php connector contract, and no Illuminate\Contracts\Queue\Queue implementation. Wiring it in would mean either running a Symfony kernel inside Laravel (a well-known anti-pattern) or porting the worker loop and SQS client logic into a Laravel-native connector.
The deeper fit issue is duplication. Laravel already ships a production-grade SQS driver (Illuminate\Queue\SqsQueue) backed by aws/aws-sdk-php, with support for FIFO queues, message deduplication IDs, deduplication groups, delayed dispatch, visibility timeouts, and queue prefixes. The marginal capability this package offers over the first-party driver is, on inspection, close to zero. That reframes the evaluation from "how do we adopt this" to "what, if anything, do we learn from it."
Integration feasibility — low. Three blockers stack:
Technical risk. Highest-risk unknowns are semantic, not syntactic: Does it long-poll (WaitTimeSeconds)? Does it delete-on-success only, and what happens on visibility-timeout expiry — does it rely on SQS redelivery or its own retry counter? Is there dead-letter-queue handling, or do poison messages cycle indefinitely? Does it support FIFO, or only standard queues? Are batch sizes and MaxNumberOfMessages tunable? None of these are answerable from the repo metadata we have, and each maps directly to a production incident class.
Key questions to send back to the maintainer / resolve in a spike:
sqs:ChangeMessageVisibility)?Stack fit: poor, but the underlying technology choice is sound. SQS as a queue engine is a reasonable AWS-native decision — managed, cheap at our volume, no broker to operate. The question is purely which client library sits between Laravel and SQS.
Recommended migration path — evaluate in this order:
| Option | Effort | Risk | Verdict |
|---|---|---|---|
A. Laravel native SQS driver (QUEUE_CONNECTION=sqs + aws/aws-sdk-php) |
Days | Low | Default recommendation |
B. Port select patterns from this bundle into a thin internal connector or a custom JobMiddleware |
1–2 weeks | Medium | Only if A proves insufficient |
| C. Adopt the bundle via Symfony-in-Laravel glue | Weeks | High | Reject |
| D. Migrate the service to Symfony | Quarters | Very high | Out of scope |
Compatibility notes. The bundle will not install cleanly into a Laravel composer.json without constraint conflicts; expect Symfony component version pins to collide with Laravel's own symfony/* transitive requirements (Laravel pins Console, HttpFoundation, Finder, etc.). Treat any attempt to force-install as a signal to stop, not a puzzle to solve.
Sequencing. Run a two-week time-boxed spike:
The most likely outcome of the spike is that we adopt Option A and take zero dependency on this package. That is a valid and valuable TPM outcome: we spent five days to avoid a multi-quarter maintenance liability.
Maintenance. If adopted, we own the glue layer permanently. Every Laravel major upgrade (container, queue contracts, Job lifecycle) is a potential break, and upstream will not be tracking Laravel compatibility — the maintainer is solving for Symfony. Realistic steady-state: 1–2 engineer-days per quarter of unplanned maintenance, plus an on-call surface for a component with no upstream SLA.
Support. No vendor, no commercial backing, no security disclosure process. Internal escalation path terminates at whoever read the source most recently. Compare against the native driver, where Laravel's release notes, community, and ecosystem of debugging tooling (Horizon-adjacent observability, queue:failed tooling, Sentry integrations) all apply.
Scaling. SQS itself scales without concern. The bottleneck is the worker: concurrency, MaxNumberOfMessages batching, and autoscaling driven by ApproximateNumberOfMessagesVisible. The native driver plays well with our existing worker autoscaling runbook; a bespoke Symfony worker loop means a second, separate scaling model and a second set of dashboards.
Failure modes to instrument regardless of choice:
maxReceiveCount + alarm on DLQ depth.Ramp-up. Native driver: essentially zero, the team already knows it. This bundle: 3–5 engineer-days for a mid-level engineer to learn Symfony DI conventions and the bundle's configuration tree, on top of the glue work — cost paid before the first job runs.
Bottom line for the roadmap. Score 0.24 and 0 dependents are directionally correct here. The package is not a candidate for production adoption in a Laravel estate; its value is as a reference implementation for SQS worker semantics during a short spike. Recommend Option A, budget the two-week spike, and record the decision.
How can I help you explore Laravel packages today?