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 Bridge Laravel Package

simple-bus/rabbitmq-bundle-bridge

Symfony bundle bridge that connects SimpleBus to RabbitMQ, making it easier to wire message buses to RabbitMQ queues for asynchronous command and event handling with minimal configuration.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • This is a Symfony bundle bridge, not a Laravel package. It wires SimpleBus/AsynchronousBundle (command/event bus with async middleware) to the RabbitMQ transport so asynchronous commands and events are published to and consumed from RabbitMQ.
  • The package itself is thin glue: a producer that hands serialized Message objects to the AMQP producer, a consumer that pumps deliveries back into the message bus, and DI/config wiring. The durable value sits in the dependencies (php-amqplib, SimpleBus/AsynchronousBundle, the RabbitMQ bundle), not in this repo. Substitutability is high — the equivalent is a few hundred lines of application code.
  • Because it is a Symfony Bundle subclass with DependencyInjection extensions and compiler passes, there is no path to loading it in a Laravel service container. A Laravel use case would require reimplementing the bridge against Illuminate\Queue — at which point you are not using this package at all. v6.2.0 does not change this in any way.
  • The new release is a constraint change only: no new transports, no new middleware, no API surface added. The architectural verdict from the prior assessment stands unchanged.

Integration feasibility

  • Feasible for Symfony applications on SimpleBus that are running a supported RabbitMQ transport bundle. The addressable window has shifted and, on balance, narrowed (see risk below): v6.2.0 drops support for Symfony ^5.2, which is where most surviving SimpleBus-era applications actually live.
  • Not feasible as a greenfield choice. Any new Symfony work should use Symfony Messenger with the AMQP transport, which provides the same publish/consume semantics plus native retry, failure transport, and middleware — first-party, actively maintained, and already the default in Symfony Flex recipes.
  • Not feasible for Laravel. The Laravel equivalent is a queue connection backed by AMQP (vladimir-yuldashev/laravel-queue-rabbitmq) or simply staying on Redis/SQS + Horizon.

Technical risk

  • Abandonment risk is downgraded, not cleared. The prior assessment's dominant risk was dormancy since 2021-08-18. v6.2.0 is the first evidence of activity in roughly four years, which is a genuine positive signal. But a single release with a one-line changelog is not evidence of a maintenance cadence, a support policy, or a security-response process. Treat the project as "revived, unproven" rather than "maintained" until there are at least two or three releases over a couple of quarters.
  • New breaking change: Symfony ^5.2 support dropped. This is the material finding in this release. Literal reading is that the ^5.2 constraint (>=5.2 <6.0) is gone, which removes Symfony 5.2, 5.3 and 5.4 LTS from the supported set. The changelog does not say whether a 5.x floor was raised (e.g. to 5.3 or 5.4) or the whole 5.x line was cut. That ambiguity must be resolved before anyone plans an upgrade.
  • The break lands on the wrong population. Symfony 5.4 LTS is the most common runtime for applications still on SimpleBus. For those teams v6.2.0 is either unusable or requires a Symfony upgrade and this package bump simultaneously. That converts a previously low-effort "adopt in place" into a project. Conversely, if the app is already on Symfony 6.x/7, this release may have made the package installable again where 2021 constraints blocked it — but the changelog gives no confirmation that PHP 8.3/8.4 or Symfony 7 are now declared.
  • Version-resolution risk remains unquantified. A 2021-era dependency graph plus one constraint edit does not tell us whether php-amqplib was moved to v3, whether the renamed php-amqplib/rabbitmq-bundle is reconciled, or whether PHP 8.3/8.4 idioms are supported. Assume the answer is no until the composer.json matrix is read directly. If a pin back to an EOL php-amqplib is still required, the unpatched-AMQP-client liability is unchanged.
  • Semantic gaps are unchanged. The bridge gives you publish/consume; it does not give you a dead-letter topology, retry/backoff, or idempotency. SimpleBus async is at-least-once, so handlers must be idempotent by construction — enforced by review, not by the library.
  • Serialization coupling is unchanged. Message serialization is SimpleBus's own format keyed on FQCN. Renaming or moving a command class breaks in-flight messages; deploy ordering between producers and consumers becomes a correctness concern.
  • Opportunity score (41.44) predates this release and should be recomputed; a constraint-only changelog is unlikely to move it much, but the "dead project" penalty is now partially stale.

Key questions

  1. Is the target application actually Symfony + SimpleBus, or is "Laravel" in the brief a mislabel? This single answer still determines whether the package is usable at all.
  2. Exactly which Symfony versions does v6.2.0 declare? Does "dropped ^5.2" mean 5.4 LTS is out, or that the floor moved to 5.3/5.4? Read the composer.json before anything else.
  3. Does v6.2.0 add PHP 8.3/8.4 and Symfony 7 support, or is the change purely subtractive? A one-line changelog cannot tell you.
  4. Which php-amqplib major is now required, and does that leave an unpatched AMQP client in the graph?
  5. Is the project on Symfony 5.4 LTS (upgrade blocked), or already on 6.x/7 (possibly unblocked by this release)?
  6. Is there an existing SimpleBus/AMQP footprint with in-flight traffic, or is this a greenfield decision?
  7. What is the real cost of the Symfony Messenger migration versus the cost of a Symfony upgrade plus fork-and-own?
  8. Is there a single maintainer, and is there any published support or security-response commitment? One release does not answer this.
  9. Are handlers idempotent today, and what is the current poison-message story?

Integration Approach

Stack fit

Stack Fit Rationale
Symfony 6.x/7 + SimpleBus (existing) Fair → Good (pending verification) v6.2.0 may have unblocked this; confirm declared matrix first
Symfony 5.4 LTS + SimpleBus (existing) Poor (downgraded from Good) ^5.2 support dropped in v6.2.0; must stay pinned or upgrade Symfony
Symfony 5.2/5.3 + SimpleBus (existing) Poor Same, with no LTS justification to stay
Symfony 6/7 (greenfield or upgrade) Poor Use Symfony Messenger AMQP transport
Laravel 9–11 None Symfony bundle; incompatible container model
Laravel + RabbitMQ None Use laravel-queue-rabbitmq or SQS/Redis + Horizon
Non-Symfony PHP (Slim, Mezzio) None No bundle kernel; reimplement the bridge

Migration path

  • Adopt-in-place (now version-conditional): only for Symfony 6.x/7 apps already on SimpleBus, and only after confirming the supported matrix. For Symfony 5.4 LTS apps this path is closed at v6.2.0 — you either stay pinned to the pre-6.2 release or you move.
  • Replace (recommended default, now more strongly): move to Symfony Messenger's AMQP transport. Rough shape: convert each async command/event to a Messenger message, replace CommandBus/EventBus injection with MessageBusInterface, map the SimpleBus middleware stack (async, doctrine_transaction, validation) onto Messenger middleware, and configure framework.messenger.transports with exchange, queues, retry_strategy, and failure_transport. Mechanical but non-trivial — middleware ordering is where behavior drift hides.
  • Fork-and-vendor (fallback, and the default for Symfony 5.4): vendor the bridge into the monorepo, widen constraints to whatever the app needs, and own it explicitly. Never carry it as an unpinned external dependency.
  • Upgrade-then-adopt (new option): if the app is a near-term Symfony 6/7 candidate, sequence the Symfony upgrade and the package bump together, since v6.2.0 forces both anyway. Do not perform the Symfony upgrade solely to satisfy this bridge — Messenger is a better reason to upgrade.
  • Laravel path: out of scope entirely; standardize on the framework queue API.

Compatibility

  • Resolve the Symfony constraint first. Confirm whether v6.2.0 excludes all of 5.x or just 5.2/5.3. This is the gating fact for every legacy consumer of this package.
  • Verify the PHP constraint ceiling against the target runtime; a constraint-only release may or may not have widened it.
  • Reconcile OldSoundRabbitMQBundle (v1/v2) against the renamed php-amqplib/rabbitmq-bundle (v2/v3). The rename is the most common source of install failures in this space; the two provide different service IDs and config keys.
  • Confirm the php-amqplib major version the bridge expects; v3 changed several APIs and is not a drop-in for code written against v2.
  • Check the SimpleBus serializer format against any consumer written in another language — a cross-language consumer will not understand it without a custom serializer.
  • Pin the previous release explicitly if you must remain on Symfony 5.4, and record that pin with an owner and an expiry date.

Sequencing

  1. Read the manifest — inspect composer.json on v6.2.0 and diff it against the pinned version. Do this before any planning; it is a 15-minute task that invalidates or confirms most of the roadmap.
  2. Inventory — enumerate async commands/events, exchanges, queues, routing keys, and consumer processes. Needed regardless of path.
  3. Decision gate — for each app, pick one of: upgrade Symfony + adopt v6.2.0; pin and fork; or replace with Messenger. Resolve the framework question (Symfony vs. Laravel) first; it is blocking.
  4. Timeboxed spike (≤1 week) — install v6.2.0 in an isolated branch, prove version resolution, publish and consume one real command end-to-end.
  5. Containment — pin exact versions in composer.lock, add a dependency-review CI gate, and assign an owner.
  6. Parity harness — dual-run producers against the old and new transport, assert identical handler effects before cutting consumers over.
  7. Cutover — drain queues, flip producers, then consumers; keep the old exchange intact and read-only for one release cycle as a rollback.
  8. Decommission — delete the bridge, remove stale config, and update runbooks.

Operational Impact

Maintenance

  • Status changes from unmaintained to lightly maintained / unproven. That is a real improvement in trajectory and should be recorded, but it does not yet support a commitment. There is no published cadence, no support policy, and a one-line changelog implies no review-ready description of the change.
  • Budget ongoing ownership time either way: a quarterly review of php-amqplib advisories and a standing patch obligation. The code surface is small enough to fork, which is what makes this tractable.
  • New maintenance burden: version-bump churn without release notes. Consumers now have to reverse-engineer breaking changes from composer.json diffs. That is slower and error-prone than a maintained project's upgrade guides.
  • Dependency drift remains the recurring tax: every PHP minor and Symfony major is a manual constraint-widening exercise.
  • Documentation and community remain thin — 39 stars and zero dependents means no StackOverflow sediment to mine. One release does not create an ecosystem.

Support

  • No vendor, no published maintainer response time, no release cadence, no security process. A single release is a data point, not a supportability posture; this still will not pass an enterprise supportability review without a fork-and-own commitment.
  • The absence of dependents remains a strong negative signal: nobody has validated this in production at scale, so you would be among the first to encounter its edge cases.
  • Practically, the release raises the odds that a trivial fix could be upstreamed, which slightly reduces fork cost. It does not eliminate the need to own the fork during an incident.

Scaling

  • Unchanged by this release. Consumers are stateless; scale with more worker processes, prefetch_count tuned to handler latency, and broker-side queue balancing.
  • The bridge does little to help or hurt throughput; the ceiling is php-amqplib plus RabbitMQ. Publisher confirms and persistent messages need explicit configuration — defaults may be fire-and-forget.
  • Connection lifecycle remains a tripwire: long-lived PHP consumers must handle broker-initiated closes and reconnect, or they silently go idle. Memory growth (Doctrine identity map being the usual offender) requires periodic recycling — plan on --max-messages-style supervision.
  • Message size and serialization format are fixed by SimpleBus; no compression or schema evolution support.

Failure modes

  • Poison messages — no DLQ or retry topology out of the box. A handler that throws indefinitely requeues forever unless you build the dead-letter exchange and x-death-based retry policy yourself. Still the most likely production incident.
  • Non-idempotent handlers — at-least-once delivery means duplicate execution on consumer crash between handler completion and ack. Commands that send email or charge cards will double-fire.
  • Redelivery storms — a broker restart with persistent messages requeues everything at once; without prefetch limits this saturates consumers.
  • Serialization breakage on deploy — class renames or moves strand in-flight messages as un-deserializable envelopes with no obvious recovery path.
  • Version skew — producer on a new build, consumer on an old one, both reading the same queue. Requires deploy discipline the bridge does not enforce.
  • Silent consumer death — no built-in heartbeat alerting; needs external supervision (systemd/Supervisor) and per-queue lag monitoring.
  • New: split-brain after the constraint change. Some services pinned to the pre-6.2 release (Symfony 5.4) and others bumped to v6.2.0 (Symfony 6/7) can coexist in one estate, sharing exchanges and queue names but running different bridge versions and potentially different php-amqplib majors. Message compatibility is not guaranteed across that boundary and must be tested, not assumed.
  • New: the unfixable middle state. For a Symfony 5.4 app, the options are "run an unmaintained 2021 pin" or "upgrade Symfony". A routine composer update on a transitive advisory can force the issue on a release day, blocking unrelated work until someone pins the tree by hand.

Ramp-up

  • The bridge itself is a fast learn: a mid-level PHP developer understands the producer/consumer wiring in under a day.
  • The real ramp is surrounding discipline: Symfony DI and compiler-pass debugging, SimpleBus conventions and middleware order, RabbitMQ topology and DLQ design, and consumer supervision. Call it 1–2 weeks to be productive and a month to be safe on-call.
  • Because upgrade risk now lives in composer.json rather than a changelog, add "can read and reason about a Composer constraint graph" to the required skills for whoever owns this.
  • Onboarding cost is inflated by thin documentation — expect knowledge to live in one or two people, which is its own continuity risk.
  • For a Laravel team, ramp-up is effectively infinite: the package does not run, and the team would instead learn the framework's own queue abstraction.

Net recommendation: unchanged in direction, sharper in rationale. Do not adopt this package for new work, and do not introduce it into a Laravel codebase under any circumstances. v6.2.0 is a marginal positive — the project is not dead — but it is a subtractive breaking change with no upgrade guidance, and it removes support for Symfony 5.4 LTS, where most surviving SimpleBus applications live. For Symfony 6.x/7, the package is now plausibly installable again, but still only as a pinned, explicitly owned component with a funded exit to Symfony Messenger. For Symfony 5.4, the fork is now mandatory, not optional. Resolve the declared version matrix before committing to any path.

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