babelqueue/symfony
A Symfony Messenger serializer that swaps the wire format for the canonical BabelQueue envelope, letting Symfony services exchange messages with Laravel, Go, Python, .NET and Node over one strict JSON format on your existing broker.
type, version, id, payload, headers) per service and then watch it drift. Adopting a published, versioned, MIT-licensed envelope is a buy decision on the contract layer only — the runtime, broker, and topology stay yours. Low commitment, high leverage: the artifact you'd otherwise maintain forever is the one thing you outsource.babelqueue/php-sdk is the piece to evaluate, and you'd be building or waiting for the Laravel Queue binding yourself. Treat the Symfony adapter as evidence the SDK can be bound cleanly to a major PHP framework — useful signal, not a deliverable for a Laravel shop.Adopt (or, more precisely, run a time-boxed spike) when all of these hold:
Look elsewhere or wait when:
babelqueue/php-sdk directly, or defer until a Laravel binding exists.Recommended gate: a 1–2 sprint spike on a non-critical cross-service queue, with a written exit criterion — "if the adapter is abandoned within 12 months, we can replace it with N days of work" (small surface area makes this cheap). Only then promote it to a standard.
For executives (30 seconds): We have PHP services and non-PHP services that need to talk to each other, and today every new language means new plumbing and a new message format to maintain. This is a small, MIT-licensed adapter that lets our existing Symfony services publish and consume a single JSON message format that Go, Python, Java, .NET, and Node can all read — on the RabbitMQ/Redis broker we already run. It doesn't change our infrastructure, doesn't require a rewrite, and it's roughly a one-line configuration change per transport. It removes a recurring tax on every polyglot integration and makes "extract this service into Go" a cheaper decision. The caveat is that the project is young and thinly adopted, so we'd pilot it on one internal queue, keep an easy exit path, and only standardize after it proves out.
For engineering (the honest version): It's a Messenger serializer, nothing more — you keep transports, handlers, workers, retries, and DLQ behavior; only the envelope on the wire changes to the canonical BabelQueue JSON format, built by babelqueue/php-sdk. Requirements are PHP 8.2+ and Symfony 6.4/7.0; install via Composer, enable BabelQueueBundle, point a transport at the BabelQueue serializer, map inbound URNs to message classes. Risks to plan for: near-zero adoption (1 star, 0 dependents, no production references), single-maintainer bus factor, and a vendor-defined spec. Mitigations are cheap because the blast radius is one serializer — pin the version, vendor the spec, write a round-trip conformance test plus a cross-language fixture test, and keep an alternative serializer configured behind a feature flag so rollback is a config change. Effort estimate: hours to wire up, days to validate. If we're on Laravel rather than Symfony, this adapter doesn't apply — we'd evaluate the SDK and own the binding.
How can I help you explore Laravel packages today?