smartassert/worker-message-failed-event-bundle
Symfony bundle that dispatches a worker message failed event, letting applications react to failed worker messages with logging, retries, alerts, or custom failure handling.
Architecture fit. Despite the brief's framing as a Laravel package, the artifact is a Symfony bundle (the ...Bundle suffix and the WorkerMessageFailedEvent name are decisive). It hooks Symfony Messenger's WorkerMessageFailedEvent, which fires when a message exhausts or fails during handling. That makes it a natural fit only inside a Symfony/symfony/messenger runtime — it is not a Laravel queue plugin, and Laravel's queue failure path (Illuminate\Queue\Events\JobFailed) is a different event model. If the target stack is genuinely Laravel, treat this as a component to study or fork, not to install.
Integration feasibility. Low-to-moderate. It's a Composer package registered in config/bundles.php with bundle configuration; the real dependency is Symfony Messenger being present and the failure events actually firing. The unknown is the downstream contract — the name implies it reports/annotates failures somewhere (likely a SmartAssert service), so there is probably an endpoint, credential, and payload schema that must be satisfied. That contract, not the PHP code, is the integration risk.
Technical risk. Materially elevated by adoption signals: 0 stars, 0 dependents, score ~2.47, opportunity ~23.85, and a single vendor org. That is a bus-factor-of-one posture with essentially no community validation. MIT licensing is favorable (fork-and-vendor is viable), and the surface area is small enough to audit. The 2025-12-01 release date should be verified — if it is future-dated or a pre-release, assume no production track record.
Key questions.
Stack fit. Two clean paths. Symfony: install, enable the bundle, point config at the sink, done — this is the intended use. Laravel: do not install; instead port the behavior onto JobFailed (or adopt Messenger alongside the queue, which is a much larger commitment). Choosing the wrong path here is the single biggest cost driver.
Migration path. Introduce behind a feature flag with the existing failure alerting left intact. Run the package in parallel with current monitoring so the two signals can be diffed before cutover. Keep the bundle config environment-scoped so it can be disabled per environment without a redeploy.
Compatibility. Pin symfony/messenger and PHP minor versions; run composer why-not against the current platform before committing. Verify against the project's Symfony LTS rather than latest. Confirm the bundle's services.yaml/config schema doesn't collide with existing DI extensions.
Sequencing.
Maintenance. Treat as vendor-owned, low-signal code: assume you may need to fork it (MIT permits this) and that it will not track Symfony major releases on your timeline. Assign an internal owner and a review cadence; don't let "it works" become "nobody knows how it works."
Support. Effectively self-support. No community, no dependents, no ecosystem answers. If a failure event stops firing after a Symfony upgrade, there is no upstream support channel — budget engineering time, not vendor time.
Scaling. Volume scales with failure rate, not throughput, so steady-state load is low. The scaling concern is burst behavior: a transport outage or retry storm can generate a large spike of failure events, and if reporting is synchronous the workers themselves slow down — amplifying the incident. Confirm async dispatch or a bounded buffer.
Failure modes. The critical one is sink unavailability: fail-open silently loses the observability signal precisely when you need it; fail-closed turns a reporting outage into a processing outage. Secondary modes: duplicate reports on retry, payload schema drift after a backend change, and PII leakage in exception traces. All three need explicit answers before production.
Ramp-up. Small codebase, but requires genuine Symfony Messenger fluency (middleware, transports, retry strategy, event dispatch order) to operate confidently. Estimate a half-day for a Symfony-fluent engineer to spike and a day to harden; add significant time if the team is Laravel-only, because the conceptual gap is the framework, not the package.
How can I help you explore Laravel packages today?