phpro/sulu-messenger-failed-queue-bundle
A Sulu CMS bundle that brings Symfony Messenger's failed queue into the admin panel. Browse failed messages, inspect error details, and retry or delete entries without leaving Sulu, making failed-job handling easier for editors and developers. It streamlines failed-message management for Sulu projec...
Architecture fit: This is a Symfony bundle (phpro/sulu-messenger-failed-queue-bundle) that wires Symfony Messenger's failed-message transport into Sulu CMS. It sits at the intersection of three concerns: Sulu's admin UI/DI container, Symfony Messenger routing, and a persistence backend for failed messages (Doctrine transport or similar). The package is a thin integration layer, not a framework — value is almost entirely in the glue: service definitions, admin UI list/retry actions, and config conventions. For a Laravel-first shop, this is an outlier: it presumes Symfony full-stack + Sulu, so fit is only relevant if you actually run Sulu (or are evaluating a Sulu migration). For a Laravel/PHP team, the realistic leverage is conceptual — the failed-queue retry pattern — not direct reuse.
Integration feasibility: Low for a Laravel codebase. Sulu is Symfony-based; Laravel's queue model (jobs, failed_jobs table, queue:retry, Horizon) already provides roughly the same capability natively, and Laravel's failed-job handling is arguably more mature out of the box. Adopting this bundle in Laravel would mean running Symfony components inside Laravel or a sidecar Sulu app purely for queue triage — high cost, low payoff. Realistic feasible scenario: an existing Sulu app on Symfony that already uses Messenger and needs failed-queue visibility in the Sulu admin.
Technical risk: Low-to-moderate from this release alone. 1.2.0 is a single PR bumping PHP 8.4 support, contributed by a first-time contributor. Risk signals worth naming: (a) the release is a platform-compat bump, not a functional change, so nothing new to evaluate behaviorally; (b) a first-time contributor touching the CI/platform matrix is a common source of silently widened constraints — worth verifying that composer.json's php requirement was raised to permit ^8.4 rather than only the CI matrix being updated, and that the dependency constraints still pin Symfony/Sulu to compatible majors; (c) bus-factor: a small vendor bundle with one external drive-by contribution suggests a thin maintenance pool. No deprecations, no breaking changes, no CVE data available in the provided notes.
Key questions:
composer.json require.php actually widened to ^8.4, or only the CI matrix? Constraint vs. tested-matrix drift is the classic 8.4-bump trap.doctrine://default failed transport vs. something else), and does the bundle ship migrations?Stack fit: Poor-to-nil for a Laravel/PHP shop. Laravel already owns this problem domain: failed_jobs table, queue:failed / queue:retry / queue:forget, retry_after, and Horizon for Redis-backed visibility. Introducing a Symfony/Sulu bundle to solve failed-queue triage in a Laravel app would be an architectural regression. The sensible read is: do not adopt; treat it as a reference implementation for the retry/admin-UI pattern if you build a custom failed-job console. If your organization also operates Sulu (e.g., a content platform separate from the Laravel API), the bundle is a reasonable, low-risk fit there — but scope it to that app only.
Migration path: None required — and none recommended. If you are on Sulu 1.x with this bundle at 1.1.0, the 1.2.0 upgrade is a routine composer update gated on the PHP 8.4 constraint question above; no code changes, no config changes, no migration. If you are on Laravel and were considering bridging to Sulu for queue management, the migration path is the wrong direction; instead, close the capability gap natively (Horizon, or a small admin surface over failed_jobs).
Compatibility: The one substantive compatibility fact in 1.2.0 is PHP 8.4 support. That expands the supported runtime envelope; it does not expand the framework envelope. Verify Symfony and Sulu major constraints separately — a PHP bump rarely changes Sulu compatibility, and assuming otherwise is a common review error. If your platform is PHP 8.2/8.3, 1.2.0 is functionally equivalent to 1.1.0 for you and can be deferred.
Sequencing:
composer.json PHP constraint actually permits ^8.4 (not just CI).Maintenance: Near-zero in the intended (Sulu) context — composer update, no migration, no config delta. The burden is not the upgrade but the ownership: a small vendor bundle with a single external contributor on the most recent release implies you should expect to self-serve patches. Treat it as "vendored dependency you may need to fork" rather than "actively maintained platform component." For a Laravel shop, maintenance cost is zero only because you shouldn't take the dependency at all.
Support: Vendor support is the GitHub issue tracker and the maintainer's release cadence. There's no commercial backing evident. Escalation path for a broken retry UI or transport bug is a PR upstream. Budget for that in any Sulu context where failed-message triage is operationally important (i.e., where a stuck queue pages someone).
Scaling: This is an admin/ops surface, not a throughput component — it lists and retries failed messages. Scaling concerns are the failed-transport storage (Doctrine table growth, index/retention policy) rather than the bundle. Unbounded failed transport tables are the realistic scaling failure: large tables make the admin listing slow and retries expensive. Confirm retention/pruning exists; the bundle itself is unlikely to provide it. Under Laravel, Horizon plus a pruned failed_jobs is the equivalent-and-better answer.
Failure modes:
composer.json → resolvable-but-untested, or tested-but-unresolvable. Most likely issue from this release.composer update with an opaque constraint error.Ramp-up: For a Laravel engineer, near-zero transferable ramp because the Laravel mental model (failed_jobs, queue:retry, Horizon) maps one-to-one and is better supported — the main learning is "don't." For a Sulu/Symfony engineer, a few hours: install, point Messenger's failed transport at the configured backend, grant admin permission for the retry UI, and read the config tree. The 1.2.0 change adds no new concepts to learn.
Recommendation: Update the assessment to record 1.2.0 as a compatibility-only release (PHP 8.4), low risk, no functional delta, no deprecations, no breaking changes evident from the notes. Do not adopt in a Laravel context — Laravel's native failed-job handling is a superset for this use case. In a Sulu context, adopt/upgrade with one verification step (confirm the PHP constraint was actually widened and 8.3 not silently dropped). Flag the single-contributor signal as a standing maintenance caveat rather than a blocker.
How can I help you explore Laravel packages today?