sroze/enqueue-bridge
Bridges Laravel's queue system with Enqueue, letting Laravel jobs run over Enqueue transports such as AMQP and Redis. Add the service provider, configure a connection, dispatch jobs as usual, and let Enqueue handle producing and consuming messages.
What the package actually is. sroze/enqueue-bridge is an adapter between two messaging abstractions: Enqueue (a broker-agnostic PHP transport library — AMQP, Redis, etc.) and Symfony Messenger (Symfony's message bus + transport component). It is not a Laravel package. That is the first thing a TPM must resolve, because the brief framing ("Laravel/PHP package") and the package's own description disagree. In a Laravel codebase, this bridge has no natural consumer: Laravel's queue abstraction (Illuminate\Queue) is a different contract, and Enqueue's Laravel-facing integration — where it exists — is a separate concern. The realistic reading is: this is a Symfony-ecosystem adapter that happens to be Composer-installable and could be pulled into a Laravel-adjacent PHP service, but only via Enqueue's framework-agnostic pieces, at which point most of the bridge's DI/container wiring is dead weight.
Architecture fit: near zero for a new build. The decisive signal is the release note for 0.2.0: "Last known working bridge before moving it." That is an end-of-line statement. Combine it with a last release date of 2018-05-08 and a star count of 8, and the picture is of a transitional shim that was superseded almost immediately after it shipped. The likely successor is well-known and worth confirming: Symfony Messenger 4.2 shipped native transports (AMQP, Redis, Doctrine) in late 2018. If Messenger grew the capability the bridge existed to provide, the bridge's reason to exist evaporated within months — which is exactly what "before moving it" implies. The successor is almost certainly "delete the bridge, configure a native Messenger transport." That is an unusually clean exit, and it is the single most important fact for the adoption decision.
Integration feasibility: technically easy, strategically pointless. The package is small glue; wiring a transport, a producer, and a consumer in a container is a day of work at most. But feasibility is not the question. The question is why you would, and the answer has to be "because you are on a Symfony/PHP service already committed to Enqueue and cannot yet move to native transports." That is a narrow, time-boxed condition. A greenfield Laravel service would be taking on a seven-year-unmaintained adapter to reach a broker it can already reach through its own queue system or through a maintained Messenger transport.
Technical risk.
Key questions a TPM must get answered before spending engineering time.
composer why sroze/enqueue-bridge)? If no, the decision is closed: do not adopt.Stack fit. For a Laravel service: do not integrate. The bridge speaks Messenger's transport contract, not Laravel's Queue/Job contract. Forcing it in means either (a) bypassing Illuminate\Queue for this one path, creating two parallel async mechanisms in one codebase — a durable operational smell — or (b) writing a first-party shim to make Messenger look like Laravel queues, which is more work than just using Laravel's queue system. For a Symfony service mid-migration off Enqueue: the bridge fits, but only as a stopgap with a fixed removal date. A TPM should treat "we are migrating off Enqueue" as the precondition for adopting an Enqueue bridge, not the outcome of it.
Migration path: the package's highest value is as a deletion candidate. The productive TPM move is to invert the question from "how do we adopt this" to "how do we get off it." That reframes the work as a small, bounded decommissioning project:
composer why, lockfile scan) — confirm whether the dependency exists anywhere and which service owns it.composer.json, delete the Enqueue config blocks, run the queue end-to-end in staging.0.2.0 (not ^0.2), vendor the source so an upstream deletion cannot break a clean build, and put the removal ticket in the same sprint as the adoption ticket.Compatibility. Unverified and likely hostile. A 2018 package needs an explicit compatibility matrix against the PHP and framework versions actually in the estate before anyone spends a day on it. If the answer is "it doesn't install," that is a favourable result: it closes the decision for free.
Sequencing (cheapest question first).
Recommendation. Default to removal or non-adoption. There is no scenario in which adding a seven-year-dormant pre-1.0 adapter to a Laravel service is the right call, and the only scenario in which it is defensible — an in-flight Enqueue-to-Messenger migration with a dated end state — is better served by finishing that migration than by installing a bridge for it.
Maintenance. The maintenance cost is entirely ours and has no ceiling we control. A dormant 2018 adapter will not be patched for new PHP or framework majors, so every platform upgrade becomes a manual, unowned patch of a third-party file. Against that, the removal path's maintenance cost is negative — deleting the bridge and using a native transport reduces the dependency count and moves the message layer onto a maintained surface. Framing the decision as "remove one dependency" rather than "add one" is the most persuasive version of this argument for a steering audience.
Support. No support channel is evidenced: no changelog beyond the 0.2.0 line, no upgrade guide, no deprecation window, no issue-triage signal. Escalation is the maintainer's personal availability, and the release note implies that availability has ended. Internal support therefore depends entirely on how thin the source is — and thin glue is cheap to own. That is the one genuinely favourable operational property here, and it is favourable because it makes deletion easy, not because it makes the package safe to depend on.
Scaling. Not a throughput concern. Bridges translate calls; they do not process volume. The scaling risk is organisational: every engineer who touches the integration must learn a package with a short knowledge half-life, and every team that touches it must be told not to build on it. Contain it to one service and one seam, or better, remove it so nobody has to learn it at all. Two parallel async mechanisms (Laravel queues plus a Messenger/Enqueue path) is the failure mode that actually costs money at scale — duplicated monitoring, two sets of retry semantics, two places where a message can silently die.
Failure modes and mitigations.
Ramp-up. For a competent PHP engineer: hours. The bridge is small, conventional glue, and the spike to remove it is comparable in size to the spike to integrate it. The real cost is decision latency — the time spent confirming what a barely-documented, seven-year-old package does and where it went. A TPM should cap that investigation at roughly one engineer-day and accept a "remove" recommendation on the evidence already available: dormant since 2018, eight stars, a release note that announces its own retirement, and a successor feature that shipped natively within months of the last tag. The package's value to a TPM is not as a component to adopt but as a cheap, low-blast-radius opportunity to demonstrate dependency hygiene — a small win that establishes the practice of deleting adapters rather than accumulating them.
How can I help you explore Laravel packages today?