opsource/rabbitmq
A Laravel package that integrates RabbitMQ messaging into PHP applications, providing a simple, configurable API for publishing and consuming messages and connecting AMQP queues to your app's existing workflow and services.
Architecture fit. The package advertises the two primitives that matter for Laravel messaging: publish and consume. The pivotal architectural question for a TPM is whether it implements Laravel's Illuminate\Queue\Connector contract (i.e., registers as a queue driver so dispatch(), queue:work, failed_jobs, retries, and backoff behave natively) or whether it is a standalone AMQP wrapper with its own publish/consume API. The first is a drop-in replacement for the existing queue abstraction; the second is a parallel messaging stack that duplicates job serialization, failure handling, and worker supervision, and becomes a permanent second thing to operate. The README and composer.json should settle this before any code is written. Second-order question: does it sit on php-amqplib (pure PHP, no extension, easier container builds) or ext-amqp (faster, requires a compiled extension in every image and CI runner)? That choice propagates into Dockerfiles and base-image policy, so it is a platform decision, not a library preference.
Integration feasibility. Integration surface is small and conventional: Composer install, service provider auto-discovery, php artisan vendor:publish for config, and a handful of env vars for host/port/vhost/credentials. MIT license removes legal friction. There is no vendor account, no SaaS dependency, and no data-residency question — the broker is yours. Absent a driver-contract implementation, the work is a thin adapter layer (roughly a sprint of effort) around the package's publish/consume calls to satisfy the queue contract.
Technical risk. This is the dominant concern. Zero stars, zero dependents, and no release since June 2024 mean effectively zero external validation: no peer review of the AMQP edge cases, no one else hitting the reconnect and ack-semantics bugs first, and no user base to signal when a Laravel or RabbitMQ upgrade breaks it. Bus factor is one. There is no CVE-response path, no deprecation runway, and no compatibility matrix we can trust. Treat the codebase as unvetted third-party source requiring an internal audit before it touches production: read every line of the connection, reconnect, and ack/nack paths specifically. The realistic posture is "adopt with a fork-and-own contingency," not "adopt as a dependency."
Key questions for the author or code review.
Illuminate\Queue\Connector, or a bespoke API?php-amqplib or ext-amqp? Version pin?basic_qos prefetch configuration, dead-letter exchange support, poison-message handling?composer.json; is there any CI matrix?Stack fit. Assumes a standard Laravel 10/11-era application on PHP 8.1+ with RabbitMQ 3.12+. The package slots in at the messaging layer beneath the job/event layer, so it should not require changes to application code that already dispatches jobs — only to the queue connection configuration. If the app currently uses database or redis queues, the abstraction boundary is already in place and the swap is configuration plus a parity check on payload format.
Migration path. Two distinct paths depending on the answer to the connector question:
QUEUE_CONNECTION, run the config publish, provision exchanges/queues, and shadow-dispatch non-critical jobs to both old and new backends for a week to compare outcomes before cutover.If the incumbent is vladimir-yuldashev/laravel-queue-rabbitmq — the de facto standard with meaningful adoption — do an explicit feature-parity diff before switching. Migrating from a widely-used package to a zero-adoption one requires a positive reason (licensing, specific feature, performance), not merely that it exists.
Compatibility. Establish and pin an explicit matrix: PHP minor, Laravel major, RabbitMQ server version, and transport extension. Because there is no upstream CI signal, we own that matrix and must verify each cell ourselves on our upgrade cadence. Plan for the package to pin us, rather than the reverse, on Laravel major upgrades.
Sequencing. (1) Read the source and answer the checklist above — a day of engineering. (2) Spike in a sandbox: publish, consume, kill the broker mid-flight, restart, confirm no message loss or infinite redelivery. (3) Wire one low-risk queue (notifications, analytics) in staging behind the adapter. (4) Parallel-run against the current backend. (5) Cut over one queue at a time, starting with the lowest-blast-radius workload. Never cut over a payments or auth-adjacent queue first.
Maintenance. The realistic operating model is internal ownership from day one. With one maintainer, no recent release, and no dependents, upstream fixes should not be assumed. Vendor the package or maintain a private fork; MIT permits it. Budget ongoing cost as: periodic audit against Laravel/PHP upgrades (small codebase, so hours not weeks), plus owning any AMQP bug we find. The opportunity score of 10.75 is worth flagging internally — read alongside zero stars and zero dependents it reads as low ecosystem pull, so do not let a scoring artifact substitute for the code review.
Support. No community, no issue-tracker throughput, no Stack Overflow corpus. Escalation is "the engineer who read the source." That engineer must be at least two people for continuity.
Scaling. RabbitMQ scales horizontally via consumer count, so the package is not the bottleneck — but its defaults are. Prefetch (basic_qos) must be tunable; too high starves sibling consumers and inflates memory, too low caps throughput. Each queue:work process holds a connection and channel; at high worker counts, watch broker connection limits and file descriptors. Confirm the package closes channels cleanly on worker recycle, or long-running workers will accumulate channels until the broker refuses new ones.
Failure modes. Prioritize these in testing:
Ramp-up. The API surface is small, so developer ramp-up is measured in hours for publishing and a day for consuming. The real ramp-up cost is operational AMQP literacy — prefetch, ack semantics, dead-lettering, connection lifecycle — which the team needs regardless of package choice. Factor that into the plan honestly; it is larger than the library adoption itself.
How can I help you explore Laravel packages today?