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

Symfony Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Polyglot architecture / incremental de-risking of a rewrite. This package is a serializer swap, not a new messaging platform: Symfony Messenger keeps its transports, handlers, workers, retries, and DLQs; only the wire format changes to a canonical JSON envelope. That makes it a cheap enabler for the decision "do we extract this service into Go/Python/.NET without re-architecting our queues?" If the answer is yes, the interop tax drops from "build a shared message contract + SDKs in every language" to "adopt a spec and one serializer binding."
  • Build vs. buy on the message contract. Teams routinely hand-roll an envelope (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.
  • Standardization / platform-team roadmap item. A language-neutral envelope is the kind of thing a platform or internal-tooling team publishes as an internal standard. This package gives you an off-the-shelf reference implementation and a citable spec (babelqueue.com) instead of a Confluence page nobody follows. Good candidate for "adopt as the default cross-service message format" in a quarterly platform OKR.
  • Framework-scope decision — this is Symfony, not Laravel. If your estate is Laravel, this specific adapter does not apply; the underlying 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.
  • Use cases that fit well: mixed-runtime back offices (PHP admin + Go ingestion + Python ML workers), M&A/legacy estates where two stacks must share one RabbitMQ/Redis, or a deliberate "PHP for CRUD, X for throughput" split where the seam is a queue.
  • Decisions this should not drive: broker selection, event-sourcing/streaming strategy (Kafka-style log semantics are out of scope), schema governance for the payload body, or multi-tenant isolation — the envelope is transport-shaped, not a data-model decision.

When to Consider This Package

Adopt (or, more precisely, run a time-boxed spike) when all of these hold:

  • You actually run Symfony Messenger 6.4/7.x on PHP 8.2+ and already have a working transport. The value is entirely in the wire format; if you have no Messenger footprint, there's nothing here for you.
  • Two or more languages must consume the same messages. A single-language PHP estate gets nothing but indirection from a language-neutral envelope.
  • You control or can influence both ends of the queue. A shared envelope only pays off when producers and consumers can be changed together; if a third party owns one side, their format wins.
  • You're comfortable owning the integration risk — see below — and can pin versions and write your own conformance tests.

Look elsewhere or wait when:

  • Maturity signals are thin. 1 GitHub star, 0 dependents, no production case studies. The repo has README/changelog/releases but no evidence of battle-testing. Score and adoption signals say "early." Budget for it being a dependency you may have to fork.
  • Single-vendor standard risk. The envelope is defined by one project and documented on one site. If BabelQueue stalls, you own the spec. MIT licensing keeps this survivable, but only if you snapshot and vendor the spec text alongside the dependency.
  • Your volume/latency profile is extreme. A JSON envelope adds serialization cost and payload overhead versus a compact binary format; if you're queueing millions of small messages per hour, benchmark before committing.
  • You need Kafka/log semantics, exactly-once, or schema registry integration. Not in scope here.
  • You're a Laravel shop. Wrong adapter. Evaluate babelqueue/php-sdk directly, or defer until a Laravel binding exists.
  • You need enterprise support, SLAs, or a security review trail. A one-maintainer project with no dependents won't clear procurement in a regulated environment without internal ownership.

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.

How to Pitch It (Stakeholders)

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.

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.
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
adachsoft/php-code-style