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

Messenger Enqueue Transport Laravel Package

sroze/messenger-enqueue-transport

An Enqueue transport for Symfony Messenger that routes messages through brokers such as AMQP, Redis, and other Enqueue-supported queues. It bridges Messenger’s transport layer with Enqueue for flexible, interoperable message queue backends.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. sroze/messenger-enqueue-transport is not a Laravel package — it is a Symfony Messenger transport that bridges Messenger to php-enqueue (AMQP, Redis, SQS, etc.). That is a fundamental impedance mismatch with Laravel's queue abstraction: Laravel dispatches serialized job objects through Illuminate\Queue, while this package plugs into Messenger's TransportInterface and expects Envelopes/Stamps and a MessageBus. It only fits if (a) the organisation already runs Symfony Messenger somewhere and wants one broker abstraction across frameworks, or (b) we are consuming messages produced by a Symfony service and need Messenger-compatible semantics. It is not a candidate to replace Laravel's native queue for ordinary application jobs.

Integration feasibility. Low-to-moderate. There is no service provider, no Laravel config surface, no Horizon/queue:work compatibility. Integration means hand-writing a Laravel service provider that registers EnqueueTransportFactory, binds a Messenger MessageBus, and maps config to DSNs, plus committing to a serialization contract (PhpSerializer vs SymfonySerializer) that must match whatever produces the messages. Cross-consumption between Laravel workers and Messenger consumers will not work without a custom serializer — that is the single biggest hidden cost.

Technical risk. The 1.0.0 release is a semver-stability signal but also a hard break for anyone on EOL Symfony: PR #135 adds Symfony 8 support and drops EOL branches, so the constraint floor moves. PHP 8.4 nullable-config cleanup (PR #134) is cosmetic. Real risks: (1) three-to-four upstream dependencies to track (symfony/messenger, enqueue/*, broker extension); (2) php-enqueue's own maintenance cadence and uneven transport quality (AMQP is strongest, Redis/SQS less proven); (3) small maintainer base with no commercial support; (4) Symfony 8 requires PHP 8.4, so teams on 8.2/8.3 will land on the 7.x line — verify what 1.0.0's composer.json actually permits before planning upgrades.

Key questions.

  • What are the exact php and symfony/messenger constraints in 1.0.0's composer.json, and which Symfony minors were dropped?
  • Does 1.0.0 change any public API (EnqueueTransportFactory, EnqueueContext, DSN format, createTransport signature), or only dependency constraints? There is no UPGRADE note in the release.
  • Which enqueue transports are exercised in CI, and against which broker versions?
  • Is ext-amqp required or suggested; what is the fallback (php-amqplib)?
  • Is there a stated backport/security-fix policy now that 1.0.0 exists?
  • Who inside the org owns this if the maintainer goes quiet?

Integration Approach

Stack fit. Viable on Laravel 11/12 (PHP 8.2–8.4) only as a deliberate, scoped bridge — a "shared broker" integration for cross-service messaging, not a queue-driver swap. Keep Laravel's native queue for in-app jobs; use this transport exclusively for the specific interop topics.

Migration path. (1) Spike on a branch: add symfony/messenger, enqueue/enqueue, the relevant transport (enqueue/amqp-ext or enqueue/amqp-lib), and this package; confirm the resolved versions. (2) Write a thin MessengerServiceProvider that registers the transport factory and binds the bus as singletons. (3) Define the serializer/envelope contract with the producing team and lock it with contract tests. (4) Run in shadow mode against a non-critical queue, comparing consumed payloads. (5) Cut over one topic, then expand. Do not attempt a big-bang replacement.

Compatibility. Pin to ^1.0 with an explicit guard that the resolved symfony/messenger major matches our PHP version. If we are on PHP 8.2/8.3, we will be on Messenger 7.x, not 8 — that is fine but must be stated in the platform baseline. Check that enqueue/* versions pulled in are compatible with the broker client extension present on the runtime image.

Sequencing. Dependency verification → spike → service-provider bridge → serialization contract tests → observability wiring (failed-transport queue, DLQ) → canary on one topic → documented GA. Budget the serialization contract work as the critical path; everything else is mechanical.

Operational Impact

Maintenance. Small code footprint but four upstreams to patch; security advisories can originate in any of them, so version pinning plus a scheduled dependency-review cadence is mandatory. Post-1.0.0 the package promises API stability, which lowers upgrade churn — but only within the supported Symfony window, and that window will keep moving as Symfony majors ship yearly.

Support. Community-only via GitHub issues; no SLA, no LTS. We need a named internal owner and a documented "fork and patch" contingency, particularly for the service-provider bridge, which is our code, not theirs.

Scaling. Inherits the characteristics of the chosen enqueue transport: AMQP scales predictably with more consumers; Redis and SQS transports in php-enqueue are less battle-tested and may show polling latency or visibility-timeout surprises. Workers are started with Symfony's messenger:consume, not queue:work — that means a second worker runtime, a second set of process supervisors, and a second scaling story in the platform.

Failure modes.

  • Serialization drift after a Messenger minor upgrade → undecodable messages, silent DLQ growth.
  • Broker topology not declared (exchange/queue/binding) → messages published and dropped with no error.
  • Missing retry/DLQ configuration → poison messages loop forever; Messenger's retry strategy is not Horizon's.
  • ext-amqp absent or version-mismatched on a new base image → transport instantiation failure at boot.
  • Duplicate delivery without idempotency keys → double side effects.
  • Observability gap: no Horizon equivalent, so we must instrument consumption lag ourselves.
  • Constraint break on the next major (Symfony 9) if the maintainer's release cadence slips.

Ramp-up. Expect 1–2 weeks for a senior PHP engineer to become productive, because Messenger's envelope/stamp/middleware model does not map cleanly onto Laravel jobs and events, and debugging crosses three layers (Laravel container → Messenger bus → enqueue transport → broker). Add runbook authoring and on-call training as explicit deliverables before any production topic depends on this 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.
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
elmogy/larafast