krak/symfony-messenger-auto-scale
Automatically scale Symfony Messenger workers based on queue load, so you run only as many consumers as needed and save resources during quiet periods. A lightweight package for dynamic worker management.
Architecture fit
Unchanged. v0.1.4 is a Symfony version-constraint widening ("Support symfony 5 and 6") — it does nothing to create a binding to Illuminate\Queue, Horizon, or queue:work. The package remains a Symfony Messenger Bundle, and our stack remains Laravel-first. Adopting it still means running Symfony Messenger as a parallel messaging runtime inside a Laravel application (standalone symfony/messenger plus a hand-rolled service provider), or it is simply inapplicable. Either path is architectural debt introduced to obtain a worker-count convenience feature.
The underlying capability — dynamically adjusting consumer process count against backlog depth — remains genuinely valuable (the 1.18 opportunity score is still the only positive signal in the dataset), but it is still solved at the infrastructure layer via KEDA/HPA queue-depth scalers, which are framework-agnostic and already supported by our platform team. A patch release does not change that calculus.
Integration feasibility
Still low as-is, with one factual correction to the prior assessment.
0.x. The release evidences a maintainer who is alive and responsive to Symfony version churn — a modest positive versus the prior "two years stale" characterization — but a constraint widening is not evidence of production hardening. Pre-1.0 semver means breaking changes are permitted in any minor; the API surface we would build against is not committed.composer.json constraint is not a CI matrix — nothing in the release notes indicates testing against 6.4 or PHP 8.3; (b) Symfony 7.x is still not covered, so the package is already one major line behind the current LTS trajectory. This is drift being managed reactively, one bump at a time, rather than a maintained support policy.Estimated integration effort is still not the risk — the code footprint is small — the risk is that we become the de facto maintainer of a pre-1.0 bundle to obtain something KEDA gives us for free.
Technical risk
Key questions
messenger:consume processes itself, or emit scaling signals to Supervisor/Kubernetes?WorkerStoppedEvent/message ack before killing a process?Stack fit
Poor for our current Laravel services, unchanged by the release. It fits only in one narrow scenario: a service already running Symfony Messenger (e.g., an acquired Symfony component or a shared library that mandates Messenger) where Laravel is not the queue owner. Even then, the scaler competes with whatever the orchestrator already does.
The honest framing for stakeholders is unchanged: this is not a Laravel package. The "PHP package" label is accurate; the "Laravel" framing in the request is not. v0.1.4 broadens PHP-framework reach within Symfony; it does not reach us.
Migration path
There is no migration path because there is nothing to migrate from — it is an additive sidecar concern. The realistic options are:
balance: auto for Redis queues. Zero new dependencies, existing ownership, no framework mismatch.Compatibility
Revised upward at the declaration level: Symfony 5 and 6 are now supported, so Symfony 6.4 LTS is plausibly in scope and the PHP 8.2/8.3 side is plausible for Laravel 10/11. Unresolved: Symfony 7.x (the forward LTS path) is not covered, and there is still no dependents base and no published CI evidence, so we would generate the first real-world compatibility data point ourselves. Widening a constraint without a test matrix moves the risk from "will not install" to "installs and fails under load," which is the harder failure to detect.
Sequencing
No resequencing required by v0.1.4; step 1 remains the decisive gate and is where we expect to stop.
Maintenance
The dominant cost, essentially unchanged. v0.1.4 shows the maintainer is responsive, which slightly reduces the probability of immediate abandonment — but with 0 dependents and a 0.x version, we should still plan to own the code. Budget: a fork, a CI pipeline, dependency bumps tracking Symfony Messenger internals, and an on-call runbook. The release actually reinforces the case for a fork: it demonstrates that keeping pace with Symfony majors is ongoing maintenance work someone must do, and we would be signing up to do it for Symfony 7 and beyond. That remains a recurring line item against a feature whose alternative is a YAML file in KEDA.
Support
Community-only, effectively single-maintainer. No SLA, no vendor, no CVE process. Escalation path is still "read the source." The 0.1.4 release is a positive liveness signal but not a support commitment — we should ask explicitly whether a 1.0 and a support policy are planned. Acceptable for a dev tool; not acceptable for anything on the message-processing hot path without a fork.
Scaling
Unchanged and structural. It scales worker count, not infrastructure. On Kubernetes this creates a second, uncoordinated control loop alongside HPA — two scalers fighting over the same resource is a classic source of oscillation. CPU/memory limits must be sized for max worker count, not average, which erodes the cost savings that justified the package. Long-running PHP workers also accumulate memory, so effective capacity degrades between restarts; a scaler that adds workers masks this until it doesn't. None of this is addressed by a Symfony version bump.
Failure modes
Each needs an explicit alert; the package provides no telemetry out of the box.
Ramp-up
Code ramp-up is low (small bundle, familiar Symfony concepts). Operational ramp-up is moderate-to-high: the team must understand Messenger worker lifecycle, transport ack semantics, and graceful shutdown to reason about incidents. That knowledge investment is stranded if we later move to KEDA, and is duplicated effort if we run both.
Recommendation: Decline for the Laravel estate — unchanged. v0.1.4 is a maintenance patch that widens Symfony support to 5 and 6; it does not add Laravel support, does not reach Symfony 7, does not reach 1.0, and does not address any of the shutdown, bounds, telemetry, or transport-introspection questions that gated adoption. Record the opportunity (queue-depth autoscaling is a real gap) but solve it with KEDA/Horizon rather than a pre-1.0, single-maintainer Symfony bundle with no downstream validation. Re-open only if (a) a Symfony Messenger service enters the estate, or (b) the package ships a 1.0 with a published support policy and a CI matrix spanning Symfony 7 and PHP 8.3.
How can I help you explore Laravel packages today?