halloverden/symfony-messenger-queue-events-bundle
Symfony bundle that adds queue lifecycle events to Messenger. Hook into message dispatching, processing, success and failure to add logging, metrics or monitoring without touching your handlers. Works with any transport via the existing event dispatcher.
Architecture fit: fundamental mismatch. This is a Symfony bundle, not a Laravel package. Bundles are registered through Symfony's Kernel/BundleInterface and wired via Symfony's DI container, tagged services, and event dispatcher. Laravel's container (Illuminate\Container) does not boot bundles, and Laravel does not ship symfony/messenger — its queue system is Illuminate\Queue, an independent implementation. There is no registration path, no service provider, and no configuration surface that Laravel would pick up automatically. Any use would mean standing up a parallel Symfony Messenger bus inside a Laravel application.
Integration feasibility: low to none in the stated stack. The bundle almost certainly requires symfony/framework-bundle (or at minimum symfony/messenger + symfony/dependency-injection + the bundle base class from symfony/http-kernel). Pulling FrameworkBundle's kernel/bundle machinery into a Laravel app is not a viable architecture — it would give you two competing container and event systems. The realistic options are: (a) do not adopt, and (b) if the org is migrating toward Symfony, treat it as a forward-looking bridge candidate only.
The capability gap probably does not exist in Laravel. The bundle's premise — dispatch events around queue operations — is largely native in Laravel already: JobQueued, JobProcessing, JobProcessed, JobFailed, JobExceptionOccurred, QueueBusy, Looping. A TPM-level evaluation should test the assumption that this package solves an unmet need before spending engineering time on it.
Technical risk: high, driven by the package itself. 0 stars, 0 dependents, no adoption signal, single-maintainer provenance, no evidence of a security review or CI. The scope ("dispatches additional events") is small enough that the code is trivially forkable — which cuts both ways: low value to adopt, low cost to replicate. There is also unverified Symfony version-constraint risk that can block composer update across the app.
Key questions to resolve before any decision (timebox: ~2 hours of source reading):
Bundle and require framework-bundle, or is it usable standalone with a manually wired dispatcher?^6.x vs ^7.x) and PHP floor.Stack fit: not recommended for a Laravel codebase. If the target is PHP 8.2/8.3 + Laravel 10/11, the correct move is to build the equivalent locally rather than integrate across frameworks. The functional surface is small — a queue-event decorator, or a listener set on Laravel's existing queue events — and it is perhaps 100–150 lines of owned, tested code.
Recommended path (do this instead of adoption):
QueueEventServiceProvider.laravel/horizon (Redis queues), laravel/telescope, or an OpenTelemetry bridge — these are maintained, adopted, and supported.Migration path (only if relevant): if the org has a committed Laravel → Symfony direction, this bundle becomes a candidate for the Symfony-side phase, not the Laravel-side phase. Sequence it after the target app is on Symfony Messenger, not before.
Compatibility: undocumented for Laravel; assume none. Verify Symfony constraint, PHP floor, and whether symfony/messenger is a hard or suggested dependency before any spike.
Sequencing: do not put this on a critical path. Run the source-reading spike in parallel with normal work; a "no-adopt / build equivalent" decision can likely be made from the README and composer.json alone.
Maintenance: you will own it. With zero dependents and a single maintainer, there is no community to absorb upgrades. If adopted, the plan must be fork-and-vendor under the org's namespace, with a named owner and a scheduled review. MIT license makes that legally clean.
Support: no vendor, no SLA, no meaningful issue history. Internal documentation would have to be written from the source.
Scaling: per-message event dispatch is cheap, but synchronous listeners are not. A listener that writes to the database or calls an external service on every publish will convert a background queue into a latency source on the request path. Enforce that listeners are async or fire-and-forget, and add a circuit-breaker or try/catch boundary around them.
Failure modes to design against:
Ramp-up: conceptually low — Messenger events are simple — but the real cost is context switching for a Laravel team that does not work in Symfony's bundle/DI idiom. Budget review time for anyone reading the source cold.
Recommendation: do not adopt in a Laravel stack. Close the requirement with native Laravel queue events and an owned, tested listener set. Revisit only if the organization moves onto Symfony Messenger, and even then re-evaluate against Messenger's own worker and transport events before adding a dependency with no adoption record.
How can I help you explore Laravel packages today?