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 Central Laravel Package

welcomattic/messenger-central

Messenger Central integrates Symfony Messenger with Laravel, providing a central bus for dispatching messages and handling them through middleware, transports, and workers. Register handlers and route commands, events, and queries while leveraging Laravel's container and conventions.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Stack mismatch is the headline finding. The release describes a Symfony Console command (bin/console messenger:central) that supervises Symfony Messenger messenger:consume workers. It is not a Laravel package: no service provider, no artisan command, no config publish, no Laravel Queue/Worker integration. Laravel's queue stack (queue:work, Horizon, Redis/DB/SQS drivers) is a separate abstraction from Symfony Messenger's transports, envelope, and failed-message store. An out-of-the-box Laravel application cannot consume this tool; only a Laravel app that has independently adopted symfony/messenger as its queue engine — an unusual, non-idiomatic configuration — would be a candidate. The intake classification should be corrected before any further review effort is spent.

Architecture fit (against the Laravel estate): poor. The tool's value proposition is developer-time observability and control over Messenger consumers. Laravel's equivalents are Horizon (Redis), queue:monitor/queue:failed, Telescope, and Pulse. Adopting this would mean adopting a second, parallel job abstraction alongside Laravel's, which we should not do for a dev convenience tool.

Version gating is severe. Requirements are PHP ≥ 8.4.1, Symfony ≥ 8.1, Unix-like OS, pcntl, and Symfony 8.2 for the amphp/parallel concurrency path. Symfony 8.1/8.2 target releases ahead of current stable, and PHP 8.4.1 is newer than the floor of most of our Laravel fleet. Even in a Symfony context this is a bleeding-edge-only tool today.

Technical risk (if adopted anywhere):

  • v0.1.0, pre-1.0 — no backwards-compatibility contract; the CLI surface, keybindings, and any persisted state can change without notice.
  • Failed-message replay re-sends to the origin transport "as is or after editing properties as a JSON document." Two risks: (a) non-idempotent handlers will double-apply side effects on replay; (b) Symfony envelopes are frequently PhpSerializer-encoded, not JSON — presenting the envelope as editable JSON implies a serializer assumption that may corrupt or reject payloads. Needs verification before anyone relies on editing.
  • Subprocess supervision with automatic restart and growing backoff, spawned from a TUI. If the TUI dies ungracefully, orphaned messenger:consume processes are a plausible failure mode.
  • Credential exposure surface. DSN options are displayed with credentials masked, but the underlying values are read into a terminal UI; masking is presentational. Fine on a developer laptop, not something to run against shared/staging brokers casually.
  • Debug-kernel coupling. The command refuses to run when the kernel has debug off unless --force. This is a sane guardrail that also confirms the intended use is local development only.

Key questions for the maintainer/owner:

  1. Is there any Laravel roadmap, or is this permanently Symfony-only? (Determines whether we close the intake entirely.)
  2. Does the failed-message editor support PhpSerializer envelopes, or only JSON/Serializer-based ones?
  3. What transport/failed-store backends are exercised in CI (Doctrine, AMQP, Redis, Beanstalkd)? Does it read messenger_messages directly or via the transport API?
  4. What happens to child workers on TUI exit, SIGINT, or terminal loss — is there reaping?
  5. Is --force intended for any non-local environment, and what is the maintainer's stance on staging use?
  6. Who maintains it (bus factor), and what is the release cadence expectation post-0.1.0?

Integration Approach

Recommendation: do not integrate into the Laravel platform. Record this as a evaluated-and-declined dependency for Laravel services, with the mismatch as the rationale, and re-file the ticket against the Symfony service owners if we have any.

Stack fit: only Symfony services using Messenger, running PHP 8.4.1+ on Symfony 8.1+, on Linux/macOS/WSL developer machines. Our Laravel services should continue using Horizon (Redis) or queue:work plus queue:failed / queue:retry for the equivalent workflow.

If a Symfony service does want to trial it:

  • Scope to a developer-dependency / global install, never to require in an application's production dependency graph.
  • Pin the version explicitly; treat any 0.x bump as a potential breaking change requiring a re-read of release notes.
  • Gate on a CI check for PHP and Symfony versions before adding anything to onboarding docs.

Migration path: none exists from Laravel Queues to Messenger, and none should be created for the sake of this tool. Any "migration" is really an adoption decision about Messenger itself, which is a separate, much larger architectural question.

Compatibility notes to verify in a spike: transport coverage (the Redis consumer option and MESSENGER_CONSUMER_NAME handling get explicit mention — confirm the same for AMQP and Doctrine), behavior with multiple failed-message stores, and whether amphp/parallel concurrency requires an extension or just a Composer package on our base images.

Sequencing: (1) correct the intake classification; (2) if a Symfony service exists, timebox a one-day spike on a single developer machine against a non-shared broker; (3) capture findings; (4) decide at the next dependency review. No work should touch the Laravel monolith at any step.

Operational Impact

Maintenance: low for the Laravel estate, because nothing is installed. For any Symfony adopter, this is a 0.x dev tool with no LTS, so budget for periodic breakage on Symfony minor upgrades. It is not on any production path, so it does not enter the on-call or patching SLA.

Support: support burden lands on the individual developer, not the platform team. We should not document it in onboarding material until it reaches 1.0 and demonstrates transport breadth. If asked, the platform team's answer is "use Horizon / queue:failed."

Scaling: the tool scales workers, not the app. Running several concurrent consumers on a laptop multiplies DB connections and broker channels, and the amphp/parallel path adds process and memory overhead per worker. Reasonable at 2–4 workers; developers will hit laptop resource limits before the tool does anything pathological. Note that scaling workers against a shared dev or staging broker will consume other people's messages — an easy way to cause an incident.

Failure modes to expect:

  • Orphaned messenger:consume processes after an ungraceful TUI exit; pcntl mitigates graceful stops only.
  • Restart-with-backoff loops masking a persistent misconfiguration (bad DSN, handler fatal) behind a UI that looks "healthy but idle."
  • Failed-message replay causing duplicate side effects on non-idempotent handlers.
  • Envelope property edits producing unparseable payloads under PhpSerializer.
  • Credential leakage via screen-sharing or pasted terminal output despite masking.
  • Refusal to start under a non-debug kernel confusing developers who copy the command into a staging shell and reach for --force.

Ramp-up: near zero for a Symfony developer already comfortable with Messenger; effectively infinite for a Laravel developer, since there is nothing in their application for the tool to attach to. Any training investment here buys skills that do not transfer to our platform.

Bottom line: the release is a credible, well-scoped v0.1.0 developer tool for Symfony, with sensible guardrails (debug-only, credential masking, pcntl graceful stop, --force escape hatch). It is not a Laravel package and does not warrant adoption, a proof-of-concept, or a slot in our platform roadmap. Update the assessment record to reflect the classification error and route it to the Symfony owners if any exist.

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.
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource