sobirjonovs/laravel-rabbit
Laravel Rabbit offers simple RabbitMQ integration for Laravel apps, helping you publish and consume messages, configure queues and exchanges, and build reliable background messaging workflows with minimal setup.
Architecture fit. The package targets a common Laravel integration gap: Laravel's queue system ships drivers for database, Redis, SQS, and Beanstalkd, but not RabbitMQ. A thin service-provider-plus-facade wrapper is a conventional and appropriate shape for this need — config published to config/, a facade for publishing, and (presumably) console commands for consuming. It fits applications that need AMQP semantics (routing keys, exchanges, topic/fanout patterns) that Laravel's queue abstraction does not expose, and it fits teams already running RabbitMQ alongside a Laravel monolith or a small set of services. It does not appear to be positioned as a drop-in Laravel queue driver (which would be the alternative evaluation path against vladimir-yuldashev/laravel-queue-rabbitmq), so the architectural decision is really "AMQP client wrapper" versus "queue driver" — these solve different problems and should not be conflated.
Integration feasibility. Mechanically straightforward: Composer install, publish config, set broker credentials, register provider (or rely on auto-discovery), publish/consume. The real feasibility question is not install effort but whether the package's abstraction is deep enough to avoid leaking broker concerns into application code. At 11 stars and a single dated release (2024-08-10), this is a low-adoption, likely single-maintainer package. Treat it as a starting point or a thin convenience layer, not a supported platform component. Feasibility is high for a prototype; it should be gated on a code read before any production commitment.
Technical risk.
Key questions for the maintainer / code review.
php-amqplib, enqueue/amqp-lib, php-amqp ext), and which is pinned?composer.json?Stack fit. Best fit is a Laravel service (or a small cluster of them) that needs event publication and consumption with AMQP routing semantics, where the team is comfortable owning RabbitMQ operationally. Poor fit if the organization has standardized on Laravel queues plus Redis/SQS and only needs background jobs; introducing RabbitMQ solely for this package adds a stateful broker to the operational surface for marginal benefit. Also a poor fit for teams without RabbitMQ runbook experience, given the package's thin support posture.
Migration path.
EventPublisher, MessageConsumer) in the application and implement it with this package. This is the single most important step — it caps switching cost if the package is abandoned or proves insufficient.Compatibility. Pin the exact package version in composer.json and verify declared constraints against the application's Laravel and PHP versions before the spike. Confirm the ext-amqp vs. pure-PHP client choice — the C extension is faster but adds a deployment dependency to every container image. Check that no transitive dependency conflicts with existing packages (notably illuminate/* and symfony/*).
Sequencing. Do the code read and spike before committing to a design. Only after the adapter exists should RabbitMQ topology (exchanges, queues, bindings, DLX) be codified — ideally as infrastructure-as-code, not as ad-hoc broker state. Broker provisioning, monitoring, and access control should land in the same increment as the first consumer, not after.
Maintenance. Assume internal ownership. Pin the version, subscribe to repository releases, and budget for periodic review. The realistic posture is "vendored dependency we may have to patch" rather than "library we consume and forget." If the package is adopted broadly, consider contributing upstream fixes to reduce fork divergence.
Support. No commercial support and a small issue tracker. Escalation path is your own engineers reading the source. Establish a named internal owner for the integration before rollout; without one, broker incidents will have no first responder.
Scaling. Throughput is bounded by consumer concurrency, prefetch settings, and connection handling, not by the package itself. Watch specifically for connection churn: if each web request opens an AMQP connection, latency and broker file-descriptor pressure will degrade non-linearly. Consumers should run as supervised long-lived workers (Supervisor/systemd or container orchestrator) with prefetch tuned to message size and processing time. Publishing from web requests should be measured — synchronous publishes add broker round-trip latency to user-facing paths and introduce a hard dependency on broker availability.
Failure modes to instrument and alert on.
Minimum observability: queue depth and consumer count per queue, publish/consume rates, publish error rate, consumer processing latency, and unacked messages. Map these to dashboards and alerts in the same increment as the first production consumer.
Ramp-up. Basic publish/consume is a few hours for a Laravel developer. Reaching production-safe operation — confirms, ack semantics, retry/DLX topology, connection recovery, monitoring — is closer to one to two engineer-weeks for someone without prior AMQP experience, plus RabbitMQ fundamentals training. Budget that explicitly; the package's "easy tool" framing understates the broker-operations learning curve, which is where the real cost sits.
How can I help you explore Laravel packages today?