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 Messenger Bundle Laravel Package

macpaw/symfony-messenger-bundle

MacPaw's Symfony Messenger bundle streamlines integrating Symfony Messenger into PHP applications, with configuration for transports, message buses, handlers, and worker commands so you can dispatch messages and process background jobs asynchronously with minimal boilerplate.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. Unchanged in substance, and the release does nothing to close the gap. This remains a Symfony bundle bootstrapped through Kernel/FrameworkBundle extension mechanics, with no ServiceProvider, no publishable config, no facade, and no Laravel-native transport bridge. It sits on Symfony Messenger, whose execution model—envelopes, stamps, middleware ordering, sender/receiver transports, its own worker loop—is not queue:work/Horizon. Adopting it means standing up a second async subsystem alongside the one the application already assumes. Fit remains poor for a Laravel-first codebase, and reasonable only where symfony/messenger is already a platform commitment.

Integration feasibility. Loadable, not self-registering. Every middleware still has to be hand-instantiated into a Messenger Bus we build and supervise ourselves. The new release adds one concrete constraint: v1.1.0 upgrades doctrine/orm to 3.x, which is where the bundle's Doctrine transport lives. That is now part of the resolution surface. On a pure Laravel stack it may well be inert—Laravel does not ship Doctrine ORM—but the moment we touch this package we inherit an ORM 3 pin, and ORM 3 is a genuinely breaking upgrade relative to 2.x (annotation driver removal, EntityManager and metadata API changes, dropped legacy mapping support). If any part of our estate still runs Doctrine 2—legacy modules, shared libraries, a reporting service—this release makes coexistence materially harder, not easier. Effort estimate is unchanged: hours if Messenger is already in the stack; multiple weeks plus permanent dual-stack operations if it is the entry point.

Technical risk. Remains high, and the release adds two new signals rather than reducing them. First, release hygiene: the changelog shows a PR titled "Release 2.0" shipping as tag v1.1.0, and it carries a major dependency bump (doctrine/orm 3.x) inside a minor version. That is a semver-discipline failure, and it means we cannot infer breaking-change risk from the version number—every bump must be treated as potentially breaking. Second, provenance: the PR references an internal tracker key (o10r-symfony-template-154), confirming this is internal glue carved out for convenience rather than a package with an external user base driving its roadmap. The changelog is two lines with no migration notes, no test or CI signal, no statement on supported Symfony/PHP ranges. Still 2 stars, zero dependents, single publisher, no community to absorb maintenance.

Key questions. The release answers none of the prior six; it sharpens two.

  1. What exactly does the bundle add over first-party symfony/messenger middleware, and does it justify an ORM 3 pin?
  2. Which symfony/messenger, doctrine/orm, and PHP ranges does v1.1.0 constrain, and does that resolve against our pinned Laravel 10/11 Symfony components? Now the hard gate, and newly complicated.
  3. Does the ORM 3 requirement break coexistence with any Doctrine 2 usage elsewhere in our estate?
  4. Is there a test suite and CI we can inspect before trusting failure semantics—and did it run against ORM 3?
  5. Is MacPaw running this in production, and what is the stated maintenance commitment?
  6. Why was a breaking dependency bump shipped as a minor, and can we rely on future version numbers at all?
  7. Can we express the same behaviour in Laravel job middleware or a small custom Messenger middleware and avoid the dependency entirely?

Integration Approach

Stack fit. Unchanged and still conflicting: Laravel gives us failed_jobs, Horizon, queue:retry, and job middleware; Messenger gives a different-but-equivalent set (failure transport, messenger:failed:retry, per-transport retry strategy). The ORM 3 bump adds a third axis—persistence layer—to a decision that was already about async paradigms. Pick one boundary and stay behind it.

Migration path. Same two scenarios, plus a new precondition:

  • Replacing Laravel queues with Messenger — still do not route this through the bundle. Use symfony/messenger directly; treat as a platform migration with its own design doc.
  • Interoperating with an existing Symfony service — the bundle remains a plausible thin convenience layer, but only if the spike proves it earns its weight and the ORM 3 requirement is compatible with both sides.

Compatibility. The Composer dry-run is still the first and hardest gate, and v1.1.0 moves the goalposts. Resolve symfony/messenger, doctrine/orm ^3, and our pinned Symfony components together against the actual target Laravel version. Pay specific attention to whether ORM 3 forces PHP or dependency upgrades that cascade into other packages. Also confirm whether the bundle still assumes FrameworkBundle services (event dispatcher, container) we would have to shim.

Sequencing.

  1. Composer resolution spike including doctrine/orm ^3 — hard gate, and now the most likely point of failure.
  2. Audit our estate for residual Doctrine 2 usage that ORM 3 would disturb.
  3. Read the source; enumerate each provided middleware and confirm it cannot be expressed in Laravel job middleware or a small custom Messenger middleware.
  4. If proceeding, isolate behind an internal MessageBus interface so the vendor package is swappable and never leaks into domain code.
  5. Pilot on one non-critical, idempotent consumer with a failure transport and alerting attached.
  6. Decide fork-and-vendor explicitly before the pilot ships, pinning to a commit rather than a version range.

Operational Impact

Maintenance. Assume we own this code. Zero dependents and near-zero stars mean no upstream pressure to fix bugs; a single publisher means bus factor of one. The v1.1.0 release strengthens the case for an internal fork: a breaking dependency bump in a minor version tells us version ranges are not a safe contract. Budget for a fork pinned to a commit with our own patch backlog, and for periodically reconciling ORM major-version drift ourselves.

Support. No commercial support, no SLA, no visible security policy, best-effort issue response, and now no migration notes even for a breaking dependency change. Any CVE in the ORM or Messenger chain is ours to detect and remediate.

Scaling. Worker-based and supervised outside Horizon: a second autoscaling story, a second metrics pipeline, a second set of queue-depth alerts, a second mental model for the on-call engineer. Throughput and durability are inherited from the transport (Doctrine, Redis, AMQP); neither the bundle nor the ORM bump improves either.

Failure modes. The dangerous ones remain semantic: at-least-once delivery with handler-level idempotency we must design for; messages dropped rather than parked when no failure transport is configured; retry strategy living in transport config, so misconfiguration is silent until an incident; container-compilation breakage on drift. v1.1.0 adds an infrastructural one worth naming: dependency-driven breakage from the ORM 3 pin surfacing at install time or, worse, at container compile, with no version-number warning to rely on.

Ramp-up. Unchanged for the async model—envelopes, stamps, middleware ordering, transport config, one to two sprints for a mid-level team to reach competence, with buffer for thin documentation and no community corpus. Add a small allowance for the Doctrine 3 migration surface if any Doctrine 2 code exists internally.

TPM recommendation. Do not adopt for a Laravel-only stack. The v1.1.0 release reinforces rather than revises that call: it introduces a breaking ORM major-version pin, ships it as a minor, and provides no migration guidance—so the integration cost, dual-stack burden, and now dependency-governance risk all exceed the value of a 2-star convenience bundle. Revisit only in a polyglot Symfony-plus-Laravel environment where symfony/messenger is already a platform commitment and Doctrine ORM 3 is already the standard; in that case, plan the internal fork on day one and pin to a commit, not a tag.

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.
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route