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

Rabbitmq Bundle Laravel Package

gepur-it/rabbitmq-bundle

gepur-it/rabbitmq-bundle provides RabbitMQ integration for PHP applications, helping you configure connections, publish messages, and consume queues with a clean, framework-friendly setup for reliable messaging.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — poor, unchanged by v5.3.0, with a naming-level mismatch to resolve first. The package is published as a bundle (gepur-it/rabbitmq-bundle), which in PHP convention means a Symfony extension registering services into a Symfony DI container via Extension/CompilerPass. Laravel has no bundle concept; it uses service providers and the Illuminate container. The v5.3.0 release note — "allow php 7.4" — is a composer.json constraint change and communicates nothing about framework support. There is still no evidence of a Laravel service provider, and with 0 dependents and 2 stars there is no ecosystem pressure that would have produced one. Consuming this in a Laravel codebase means we either (a) instantiate the underlying classes manually and hand-wire them, bypassing the bundle's only real value-add, or (b) build a shim service provider ourselves. Either way we absorb the integration work the package was supposed to save us.

Integration feasibility — technically possible, commercially weak, marginally easier to install. The bundle almost certainly wraps php-amqplib/php-amqplib (the near-universal PHP AMQP client) and adds connection-factory/config sugar. That means the useful surface is thin and the underlying library is a commodity we can depend on directly. Nothing here is hard to replicate: a config array, a connection singleton, and reconnect handling is on the order of a few hundred lines. v5.3.0 lowers the PHP floor to 7.4, which can only help Composer resolution in a mixed-version matrix — but our target is modern PHP, so this is a benefit we will never realise, and a relaxed lower bound tells us nothing about whether 8.3/8.4 are exercised. The realistic value of the package remains that of a reference implementation for connection setup, not a dependency.

Technical risk — still high, concentrated in abandonment, but the abandonment story needs restating. The previous assessment characterised this as four years of silence since 2021-04-16. That is now factually out of date: v5.3.0 has shipped. The revised picture is a near-dormant project punctuated by a single-constraint release. That is not the same as revived maintenance, and it does not retire any of the underlying risks:

  • No security response path. Nothing in the release note suggests the pinned php-amqplib range moved. If an advisory lands against it, we still cannot consume a fix without forking.
  • No CI signal. A one-line composer.json change is not evidence that any PHP/Symfony version matrix is actually exercised. Constraints may still permit installs that have never been run.
  • Direction of travel is backwards. Lowering the PHP floor in a new feature release indicates the maintainer is serving legacy consumers, not modernising. For a dependency we would run on current PHP and Laravel, that is a mildly negative signal, not a positive one.
  • Supply chain. A low-traffic, low-visibility package from a small vendor is a weak link for an infrastructure-critical dependency. No dependents means no one else is watching it.
  • The 0.01 score reads as a disqualifier. Treated as a quality/adoption signal, it is below any reasonable adoption threshold for a message-broker integration, where failure means dropped or duplicated messages rather than a degraded page render. One constraint-only release does not move this.

Key questions before any further work:

  1. Does the repo expose a Laravel service provider, or is it Symfony-only? (Check for Symfony\Component\HttpKernel\Bundle\Bundle subclass vs. Illuminate\Support\Contracts\ServiceProvider.) v5.3.0 does not address this.
  2. What does composer.json now pin for php, symfony/*, and php-amqplib/php-amqplib? Specifically: did v5.3.0 only widen the PHP constraint, or did it also relax Symfony or php-amqplib bounds? Does it install cleanly on our target PHP and Laravel versions, or does the widened floor mask an unresolvable graph at the top end?
  3. Does it implement reconnect/heartbeat logic itself, or delegate to php-amqplib? This is the single most valuable thing it could contain, and the release tells us nothing about it.
  4. Does it handle topology declaration (exchanges, queues, bindings, DLX) or assume pre-provisioned infrastructure?
  5. Is the license compatible, and is the vendor reachable for a support conversation? A released version proves the repository is not archived; it does not prove a support relationship exists.
  6. What is our actual requirement — queue/worker semantics for Laravel jobs, or raw AMQP pub/sub with custom routing? The answer changes the recommendation entirely.

Recommendation for the evaluation gate: unchanged. Do not adopt as a dependency. Either use php-amqplib directly behind our own thin abstraction, or — if the need is Laravel job dispatch — evaluate a maintained Laravel queue driver instead. Keep this repo as a reading reference. v5.3.0 is not a reason to reopen the decision; it is a data point that the project is dormant-but-not-dead and still pointed at legacy PHP.

Integration Approach

Stack fit. Two distinct paths, and the requirement decides:

  • Laravel queue semantics (jobs, retries, failed-job handling, dispatch()): do not use this package. Use a maintained Laravel queue driver for RabbitMQ, which integrates with queue:work, Horizon-style supervision, and the failed_jobs table. This package does not speak Laravel's Queue contract, and v5.3.0 does not change that.
  • Raw AMQP (custom routing keys, fanout/topic exchanges, cross-service events, non-Laravel producers): depend on php-amqplib directly and wrap it in one internal service provider plus a config file. We get version currency and full control for a small, bounded amount of code.

Migration path. If the team has already prototyped against this bundle, treat it as a fork, not a dependency:

  1. Vendor the useful classes into app/Support/Amqp or a first-party packages/ directory, preserving the license header. Pull the v5.3.0 tag so the snapshot is current.
  2. Strip the Symfony DI wiring; replace with a Laravel service provider binding a connection singleton and a channel factory.
  3. Re-pin to a current php-amqplib — do not inherit the bundle's pin, which the release note gives us no reason to believe was refreshed.
  4. Delete anything we have not read line by line — the codebase is small enough that "read it all" is a realistic precondition.

Compatibility. v5.3.0 improves the odds of a clean resolve only at the bottom of the version range, which is not where we live. Verify concretely rather than assuming: run composer why-not against our target PHP, then attempt an install in a throwaway branch and boot the app. Watch for Symfony-version constraints that conflict with Laravel's own symfony/* transitives — still the most likely hard blocker, and still capable of surfacing as an unresolvable dependency graph rather than a runtime error. Also confirm PHP 8.2+ dynamic-property and null-to-non-nullable deprecations, which remain the classic failure signature for 2021-era code that a composer.json edit would not have fixed.

Sequencing.

  1. Spike (≤2 days, do not extend): read the source at v5.3.0; answer the key questions; determine whether reconnect logic is present and correct. Diff v5.3.0 against the prior tag to confirm it is constraint-only — if the diff touches code, re-scope.
  2. Decision gate: adopt-as-fork vs. build-thin-wrapper vs. buy/maintained-driver. Default to the last option for queue workloads.
  3. Infrastructure first: provision exchanges, queues, bindings, DLX, and per-environment vhosts before application work. Application code should never be the thing that creates production topology implicitly.
  4. Abstraction: define our own publisher/consumer interfaces so the client library is swappable. This is cheap now and expensive later — and it is what keeps a future migration away from this package off the critical path.
  5. Pilot: one non-critical consumer in staging, with load and failure injection, before any revenue-path traffic.
  6. Rollout: one service at a time; keep the old path live behind a flag until the new consumer has run clean through at least one deploy cycle.

Operational Impact

Maintenance — we own it outright. Adopting means accepting permanent ownership of a dependency with effectively no upstream. Every PHP upgrade, every php-amqplib advisory, every Laravel major becomes our work. v5.3.0 shifts this from "the maintainer is gone" to "the maintainer surfaces occasionally for compatibility housekeeping," which is not the same as a maintenance commitment and does not change the budget line. "It's just a connection wrapper" is true until the first security advisory, at which point it is an incident. The fork-and-own path is only defensible if we accept that the fork is ours, with an owner, a review cadence, and a documented upgrade trigger.

Support. No vendor SLA and — at 2 stars, 0 dependents — effectively no community to search for prior art. Every problem is novel by default. The v5.3.0 release is a weak responsiveness signal: it proves someone can cut a tag, not that a support conversation would be answered or that a bug report would be triaged. Compare against php-amqplib, which has a real issue history, or a maintained queue driver where "how do I handle reconnect on consumer restart" has an answer that isn't "read the code." Factor the debugging time into the business case; for a broker integration it usually exceeds the build cost.

Scaling. The bundle's scope is connection management, so scaling characteristics are inherited from php-amqplib and our own topology decisions rather than from this package. Real constraints to plan for:

  • Consumer count is a function of queue depth and prefetch, not the client library. Set prefetch_count deliberately; the default is a common cause of skewed load across workers.
  • Connection-per-process. AMQP connections are not fork-safe. Long-running workers must reconnect after fork, and the bundle's reconnect behavior (if any) needs explicit verification — a stale socket after fork is a classic silent stall.
  • Memory. Long-running PHP consumers accumulate memory; a --max-jobs-equivalent restart policy is mandatory, not optional.
  • Throughput ceiling sits with the broker and ack strategy, not here. Confirm we can publish confirms and consume with manual ack before committing to any latency target.

Failure modes. These are the ones that page someone:

  • Silent connection loss with no reconnect → consumer appears healthy, processes nothing. Needs an external liveness check, not just a process check.
  • Requeue storm / poison message. Without DLX and a retry cap, one malformed payload can loop indefinitely and saturate a queue. Topology must include a dead-letter path from day one.
  • Message loss on publish. Without publisher confirms, "sent" is not "accepted." If the message matters, confirms are required.
  • Duplicate delivery. At-least-once is the realistic guarantee here; consumers must be idempotent. This is a design obligation the package does not discharge.
  • Unacked message pileup on worker crash → broker holds messages until timeout, delaying redelivery.
  • Version-drift breakage on an unrelated composer update. Note that v5.3.0 widens a constraint — the opposite of tightening — so this risk is not reduced by the release.

Ramp-up. The code volume is small, so reading it is fast; the real ramp is AMQP fluency — ack/nack semantics, prefetch, exchange types, DLX, confirms. That knowledge is required regardless of package choice, which further erodes the package's value: it saves wiring, not understanding. Plan for one engineer to own broker semantics end to end, document the topology as code, and run a failure-injection exercise (kill a consumer mid-message, drop the connection, publish a poison payload) before the first production consumer goes live. With a dependency whose most recent activity is loosening a PHP version floor, treat the first pilot as a genuine unknown rather than a formality.

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.
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle