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

Sulu Messenger Failed Queue Bundle Laravel Package

tailrdigital/sulu-messenger-failed-queue-bundle

A Sulu bundle for managing Symfony Messenger failed queues from the CMS admin. Inspect failed messages, review errors, and retry or remove jobs to keep background processing healthy in Sulu projects.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. This package is materially mis-scoped against the stated target platform. tailrdigital/sulu-messenger-failed-queue-bundle is a Symfony bundle targeting Sulu CMS, built on Symfony's Messenger component with a PHPCR/Jackalope persistence layer. It is not a Laravel package: it has no service provider, no config/*.php publishable config, no Laravel queue driver contract, and no Illuminate\Contracts\Queue integration. Any assumption that it drops into a Laravel application is incorrect. The relevant question for the portfolio is whether we have a Sulu/Symfony estate at all — if not, this evaluation should terminate here rather than proceed to integration planning.

Integration feasibility. For a genuine Sulu 2.x application running Symfony Messenger with Doctrine DBAL transport, feasibility is high: the bundle's purpose (durable failed-message queue with admin visibility and replay) is a real operational gap in stock Messenger, and installation is conventional bundle registration plus transport configuration. For a Laravel application, feasibility is effectively zero without an adapter layer, and building that adapter would mean reimplementing the bundle's value proposition against Laravel's failed_jobs table, which already exists natively. Net: this is a build-vs-adopt question that Laravel already answers in favour of build.

Technical risk. Release 0.4.1 is a single transitive dependency bump — jackalope-doctrine-dbal, pulled via PR #13. This is a patch-level maintenance release with no API surface change, no changelog entry describing behaviour, and no migration notes. The risk profile is dominated not by 0.4.1 but by the package's baseline: pre-1.0 versioning (0.4.x) implies no stability guarantee and licence to make breaking changes in minor releases; a single-maintainer organisation (tailrdigital) with a low PR cadence; and a dependency chain that reaches into Jackalope/PHPCR, a comparatively narrow ecosystem with historically slow Doctrine DBAL compatibility turnarounds. The jackalope-doctrine-dbal bump is worth reading as a signal: it means the bundle's practical compatibility envelope is coupled to PHPCR transport internals, so a Doctrine DBAL major in our stack could strand us on an old bundle version with no upstream fix obligation.

Key questions.

  • Do we actually operate a Sulu/Symfony estate, or was this raised against a Laravel service in error? This determines whether the remaining sections matter.
  • Which transport is in production use — Doctrine DBAL or AMQP? Jackalope coupling only bites the DBAL path.
  • What is the pinned jackalope-doctrine-dbal version before and after 0.4.1, and does the new constraint intersect our Doctrine DBAL pin?
  • What is the maintainer's stated support policy pre-1.0, and is there a second committer with merge rights?
  • Does the failed-queue UI require Sulu admin security context, or can it be exposed independently?
  • Is there any test coverage signal (CI status, coverage) for the 0.4.1 tag, or is the release pipeline bump-only?

Integration Approach

Stack fit. Conditional and, on current evidence, negative for the stated Laravel target. Fit requires all of: Symfony 5.4/6.x, Sulu 2.x, Symfony Messenger as the message bus, and Doctrine DBAL (not AMQP-only) as the failure transport. If any of those is absent, the package is out of scope and the correct decision is to close the evaluation. Where the stack does match, fit is good — the bundle occupies a well-defined seam between Messenger's failure transport and the admin UI, which is precisely the seam teams otherwise hand-roll.

Migration path. There is no migration from a Laravel failed_jobs table into this bundle; the data models are unrelated. Within Sulu, adoption is additive rather than migratory: register the bundle, point the failure transport at the bundle's transport, and existing in-flight failures are not retroactively imported. Plan for a cutover point rather than a backfill, and accept that pre-cutover failures remain in the previous transport until drained.

Compatibility. Version 0.4.1 carries no constraint changes we can see beyond the jackalope-doctrine-dbal bump. Treat compatibility as: PHP version must satisfy both the bundle and the new Jackalope constraint; Doctrine DBAL must satisfy Jackalope's range, which is typically narrower than the bundle's own. Because the bump is transitive, our own composer.lock diff is the authoritative record of what actually changed — require that diff before approving, not the release note. Pre-1.0 semver also means we should pin exactly (0.4.1, not ^0.4) and treat every minor as potentially breaking.

Sequencing. (1) Confirm stack applicability — this gates everything and should be a same-day decision, not a spike. (2) If applicable, pin 0.4.1 in a non-production branch and capture the full composer.lock delta, specifically the resolved Jackalope and Doctrine DBAL versions. (3) Run the existing Messenger failure-path integration tests against the bumped set. (4) Exercise the replay/retry path and the admin listing manually, since these are the bundle's actual surface and are the least likely to be covered by consumer test suites. (5) Only then promote, with a documented rollback to 0.4.0 (which the changelog makes trivially available).

Operational Impact

Maintenance. Low effort, but not zero, and the burden is asymmetric: we will spend more time tracking the Jackalope/PHPCR dependency chain than the bundle itself. Pre-1.0 status means we own upgrade evaluation on every release, including patch releases like this one, because the maintainer is under no obligation to preserve behaviour. Budget a recurring review per release rather than a one-off integration cost.

Support. Single-vendor, small-team upstream with a low-velocity release history and no commercial support tier evident. Escalation path is GitHub issues only. For a failed-message queue — a component that matters precisely when things are already going wrong — this is a thin support story. Mitigate by ensuring at least two internal engineers can read the bundle source, and by keeping the rollback artefact (0.4.0) available.

Scaling. The bundle sits on the failure path, which is inherently low-throughput relative to the primary bus: only messages that exhaust retries land here. Scaling pressure therefore comes from the datastore, not the bundle — the failed-message table and its admin listing/query patterns. Watch for unbounded growth if replays are rare and retention is unset; define a retention or archival policy at adoption, not after the table grows. Replay operations are the throughput spike to design for, since a bulk replay re-enqueues into the main transport.

Failure modes. (a) Dependency drift: a Doctrine DBAL upgrade in our stack conflicts with Jackalope's range, blocking our own framework upgrades and forcing either a fork or a bundle downgrade — this is the highest-probability, highest-cost failure. (b) Silent accumulation: failures written but never reviewed, turning the queue into an unstructured log; the admin UI helps only if someone owns it. (c) Replay storms: a bulk replay saturating the primary transport and cascading into the very failures the bundle exists to capture. (d) Upstream abandonment: a bump-only release like 0.4.1 with no functional change can be a leading indicator of reduced investment; monitor release cadence and issue responsiveness as an early-warning signal. (e) Admin-surface exposure: the failed-message UI reveals exception messages and payload contents, which frequently contain PII or credentials — confirm access control and redaction before enabling in production.

Ramp-up. Minimal for engineers already fluent in Symfony Messenger, because the bundle's concepts (failure transport, retry, replay) map onto Messenger primitives. The ramp-up cost that is easy to underestimate is PHPCR/Jackalope familiarity — a narrower skill set than Doctrine ORM, and the layer most likely to be touched during dependency troubleshooting. For a Laravel-only team the ramp-up is not "steep" but "inapplicable": there is no transferable path, and effort should be redirected to Laravel's native failed_jobs tooling and Horizon, which cover the same operational need with no new dependency and no new vendor.

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.
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle