happyr/mq2php-bundle
Symfony bundle for bridging message queues to PHP consumers, simplifying queued message consumption and processing through configurable services and console commands.
call_user_func it. This is the core decision it informs, and it is the decision most worth deliberating rather than copying.SerializesModels), and dependencies via the container — this package adds nothing there and is a Symfony bundle (FrameworkBundle service wiring), so "buy" means "adopt a second framework's idioms and a 2018-era dependency."Class::method targets.Adopt only if all of the following hold:
illuminate/* support — you would be reimplementing the wiring).Look elsewhere — or build ~150–300 lines in-house — when:
SerializesModels. It is maintained, observable (Horizon/Telescope), retry/backoff-aware, and does not execute broker-supplied code.To executives: This package lets a queue consumer execute PHP code carried inside the message. It has 1 GitHub star, zero dependent projects, and no release since January 2018 — there is no maintainer, no security patching, and no support path. It is also built for Symfony, while we are on Laravel, so adopting it means owning a fork of an abandoned library to gain a capability our framework already ships. Recommendation: do not adopt; treat as a reference design only. Our exposure if we adopted it would be an unaudited code-execution path behind our message broker — the highest-severity class of vulnerability — in exchange for zero unique capability.
To engineering: Laravel's queue already serializes job classes and model identifiers to the broker and resolves handlers on the consumer. The only thing this bundle offers beyond that is dispatching arbitrary callables, which is precisely the part we should not want. If we have a real need for runtime-defined work (tenant workflows, plugin actions), we should implement a handler registry: messages carry a stable action key plus a JSON payload, and a config-driven map resolves the key to a class. That gives us the same flexibility, an explicit allowlist, schema versioning, and no third-party dependency — roughly a sprint's worth of work, fully testable, and it keeps the broker out of our trusted compute boundary. Action: close this out as evaluated-and-rejected; file the registry pattern as a spike if the dynamic-dispatch requirement is confirmed.
How can I help you explore Laravel packages today?