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

Laravel Queue Rabbitmq Laravel Package

dejwcake/laravel-queue-rabbitmq

RabbitMQ queue driver for Laravel. Connects Laravel's queue system to RabbitMQ so jobs publish and consume over AMQP, with configurable exchanges, routing, delays, and connections. A drop-in alternative to the default queue driver, configured through queue.php for reliable background processing.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy on queue infrastructure. This package is the maintained bridge between Laravel's queue abstraction and RabbitMQ. Adopting it keeps a commodity integration out of your roadmap; the v15.1.0 release is evidence the maintainer is actively tracking Laravel internals, which is the main cost of any in-house driver.
  • Laravel upgrade sequencing. The bulk of this release exists because Laravel 13 changed internal Worker signatures. If a Laravel 13 upgrade is on the roadmap, v15.1.0 is the version that makes rabbitmq:consume actually work there — on Laravel 13.31+ every delivery previously failed with an ArgumentCountError, and on 13.18+ the --max-jobs / --stop-when-empty limits silently never fired. Treat this as a gating dependency in the upgrade plan, not a nice-to-have.
  • Operational contract for deploys and autoscaling. Exit codes are now meaningful: rabbitmq:consume propagates the worker's exit code like queue:work, e.g. 12 on memory-limit. Before, it always exited 0. That single change determines how Supervisor/systemd/Kubernetes restart policies and alerts should be configured, and it turns "container exited" from a useless signal into a diagnosable one.
  • Graceful shutdown / drain behaviour. A paused consumer (SIGUSR2) now exits on SIGTERM, a queue restart, or time/memory limits instead of hanging until resumed. This unblocks rolling deploys and scale-down flows that rely on pause-then-terminate; previously those could stall a pod past its termination grace period.
  • Release-time reliability expectations. declareExchange() now waits for broker confirmation, so an isExchangeExists() check immediately afterwards no longer intermittently returns false, and a rejected declaration fails fast rather than surfacing later on an unrelated operation. This supports a decision to move topology provisioning into deploy steps instead of manual runbooks — with the tradeoff that declaration is now a synchronous round trip on the startup path.

When to Consider This Package

Adopt (or upgrade to) this package when:

  • You are on Laravel and have standardized on RabbitMQ — for cross-service work queues, routing via exchanges, or per-message TTL/dead-lettering that Redis or SQS model poorly.
  • You run consumers under a process manager and want worker-style exit semantics, --max-jobs, --stop-when-empty, --stop-when-empty-for, and pause/resume for draining.
  • You are moving to Laravel 13, or are already there and seeing "no jobs processed" or limits that never stop the consumer — this release is effectively the fix, and it is the minimum viable version for those combinations.
  • You need exchange/topology declaration to be deterministic during deploys.

Look elsewhere or defer when:

  • You don't need AMQP. If Redis queues plus Horizon's dashboard/UI/metrics cover your needs, adding RabbitMQ adds a broker to operate without a matching benefit.
  • You want a first-party-feeling dashboard. This is a transport driver; visibility into queue depth, retries, and failures still comes from the RabbitMQ management UI or your own instrumentation, not from this package.
  • You are pre-PHP 8.1. The constraint is now ^8.1 (the previous ^8.0 could never resolve, so this is cleanup rather than a real narrowing — but confirm your runtime floor).
  • You depend on custom pauseWorker() overrides. If you subclass Consumer and override pauseWorker() (inherited from Worker), that hook is no longer called; a paused consumer now checks stop conditions itself. Audit before upgrading.
  • You are on an unsupported/older Laravel major. The fixes are pinned to the Laravel 13 internals; the compatibility matrix should be checked explicitly rather than assumed from the version number.

Upgrade checklist a PM should track as acceptance criteria:

  1. Audit Supervisor/systemd/Kubernetes restart policies — they now see real exit codes. A rule that restarts on any non-zero exit will crash-loop a memory-limited worker that should instead be recycled with a fresh limit or scaled.
  2. Audit alerting that keys off exit status 0.
  3. Grep for pauseWorker() overrides.
  4. Confirm behaviour of pause + SIGTERM against your termination grace period.

How to Pitch It (Stakeholders)

To executives: This is a maintenance upgrade to our RabbitMQ queue driver that closes a silent job-loss risk on Laravel 13 — on recent Laravel versions the consumer either processed nothing or ignored its own stop limits, both without obvious errors. It also makes worker exit codes meaningful, which improves how our infrastructure reacts to failures. Cost is a small, well-scoped operations config review (restart policies and alerts); there is no new service to run and no vendor spend.

To engineering: Upgrade to v15.1.0 before or alongside the Laravel 13 move — it is the version that fixes the Worker signature incompatibilities (ArgumentCountError on 13.31+, ignored stop conditions on 13.18+). Three behaviour changes to handle deliberately: exit codes now mirror queue:work (e.g. 12 for memory limit, previously always 0), so update process-manager restart rules and alerts; subclassed Consumer::pauseWorker() overrides are dead code and pause now exits on SIGTERM/restart/limits; and declareExchange() is now a confirmed, synchronous round trip, so deploy-time topology steps will fail fast instead of flaking later. The test suite now drives rabbitmq:consume end to end and CI pins the last pre-change Laravel releases, so regressions in this area should surface in CI rather than in production.

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.
mehedimi/laravel-amp-mail
happones/laravel-vue-i18n-generator
jwerd/inertia-table
siberfx/flysystem-wasabi
hollyit/token-replace
ippanelcom/laravel-sdk
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel