vladimir-yuldashev/laravel-queue-rabbitmq
RabbitMQ queue driver for Laravel. Adds a full-featured RabbitMQ backend to Laravel's queue system, supporting delayed and priority queues, exchange routing, and reliable message publishing and consumption.
Architecture fit. laravel-queue-rabbitmq (vyuldashev) is a third-party queue driver that plugs into Laravel's QueueManager via a service provider and Queue::extend. It is architecturally a substitution, not an addition — your application code keeps using dispatch(), Bus, job middleware, and failed_jobs semantics; only the transport changes from Redis/database/SQS to AMQP. That makes it a low-friction fit for teams already standardized on RabbitMQ for inter-service messaging, and a poor fit for teams that want a managed queue with zero broker operations. The most important architectural caveat: Laravel Horizon is Redis-only and does not work with this driver. Any team currently relying on Horizon for throughput metrics, retry inspection, and job tagging loses that surface and must replace it (RabbitMQ management UI, Prometheus/Grafana rabbitmq_exporter, or a custom dashboarding effort).
Integration feasibility. High. Standard install path: composer require vyuldashev/laravel-queue-rabbitmq, publish config/rabbitmq.php, define hosts/queues/options, set QUEUE_CONNECTION=rabbitmq. Delayed jobs depend on either the rabbitmq_delayed_message_exchange plugin or the driver's per-delay queue strategy — this is a deployment prerequisite that must be confirmed against the managed broker offering (it is unavailable on some managed services). Quorum queues, priorities, and dead-lettering are configurable but require deliberate choice, not defaults.
Technical risk. Moderate, concentrated in three areas:
Key questions for the adopting team.
rabbitmq_delayed_message_exchange available on our broker? If not, are we accepting the per-delay-queue fan-out?Stack fit. Laravel 11/12 on PHP 8.2–8.4, php-amqplib/php-amqplib as the transport, RabbitMQ 3.12+/4.x as the broker. v14.4.0 adds PHP 8.4 to the CI matrix — this is a test-coverage signal, i.e. the suite passes on 8.4, which is a reasonable proxy for runtime support but should still be validated in staging on your actual extension set (ext-bcmath, ext-json, sockets). PHP 8.4 support matters if your platform roadmap includes an 8.4 upgrade within the next two quarters; if not, it is a low-urgency item.
Migration path. Do not cut over in place. Recommended shape:
rabbitmq connection alongside the existing driver in config/queue.php.Watch specifically for: failed_jobs behavior (the driver still records failures to the database table via Laravel's failed-job provider — confirm this is what you want rather than relying on RabbitMQ dead-letter queues), job payload size limits (AMQP frame/message size), and any use of Queue::later() in code paths that assume a specific delay implementation.
Compatibility. Treat Laravel version compatibility as an explicit matrix entry, not an assumption. The 12.34 fix implies the package tracks Laravel internals release-by-release; pin the package to 14.4.0 and pin Laravel to a tested minor, with a deliberate bump cadence. PHP 8.4 is CI-verified as of this release; PHP 8.2/8.3 remain the conservative production choices.
Sequencing. v14.4.0 contains no breaking changes, no deprecations, and no new features — it is a maintenance and compatibility release. There is therefore no upgrade risk in moving from 14.3.0 to 14.4.0, and 14.4.0 is the correct baseline for any new adoption. Sequence adoption as: (a) pin 14.4.0 + Laravel version, (b) broker readiness (plugins, quorum queues, DLX topology), (c) observability replacement for Horizon, (d) pilot queue, (e) incremental cutover. Do not start at (d).
Maintenance. Ongoing cost is real but bounded: roughly one to three engineer-days per quarter tracking package releases against Laravel releases, plus the cost of the fork-and-patch fallback if needed. The dominant maintenance driver is not the package — it is the Laravel patch-release coupling demonstrated in this release. Budget for a CI job that runs the full queue integration suite on every Laravel bump.
Support. GitHub issues and community PRs only; no vendor, no SLA, no security advisory process beyond GitHub's. Mitigations: internal fork with a documented patch process, named internal owner for the dependency, and a standing rule that a stalled upstream is a fork-and-ship decision rather than a blocker. Two- to four-week responsiveness on issues is the realistic expectation; this release (two PRs, one from a first-time contributor) is consistent with that.
Scaling. Consumer-side scaling is straightforward — add workers, tune prefetch_count and connection/channel reuse; the driver is a thin wrapper over php-amqplib's blocking I/O, so worker count and prefetch matter more than driver config. Broker-side scaling is where teams get surprised: memory and disk alarms trigger publisher flow control that manifests as slow or blocked dispatch in the application, and connection churn from short-lived workers can exhaust broker resources. Set expectations that this package makes RabbitMQ a tier-0 dependency — if the broker is down, dispatch fails at the request path.
Failure modes to design for explicitly.
Queue::fake-style degradation exists. This is the most common production incident with any non-managed queue driver.Ramp-up. A mid-size team should plan one to two sprints: half a sprint for RabbitMQ fundamentals (topology, exchanges, quorum queues, DLX, flow control) and half to one sprint for the pilot queue plus observability tooling. Teams without prior AMQP experience should weight this higher, and should not adopt this driver for critical queues until at least one engineer can debug a stuck consumer without vendor help.
Verdict on v14.4.0. Maintenance release; no breaking changes, no deprecations, no new capabilities. It is a low-risk upgrade from 14.3.0 and the recommended baseline for new adoption. The meaningful signal is not the PHP 8.4 CI addition — it is the Laravel 12.34 compatibility fix, which confirms the package's tight coupling to Laravel internals and should directly inform pinning policy and CI coverage.
How can I help you explore Laravel packages today?