mxl/laravel-queue-rate-limit
mxl/laravel-queue-rate-limit lets you throttle Laravel queue jobs per queue, capping how many are processed in a given time window. Configure limits in your queue config to protect external APIs and downstream services from job bursts.
Architecture fit
queue:work --stop-when-empty and queue-level rate limiting. This is a narrow but operationally significant seam: it sits between the Worker loop, the queue driver, and the rate-limiter backend (typically Redis or cache).--stop-when-empty for batch-style or ephemeral worker invocations (CI jobs, cron-triggered drains, one-shot container tasks).Integration feasibility
Technical risk
--stop-when-empty will no longer exit when the only remaining jobs are pending behind a rate-limit window. It will wait for the nearest window and retry. Any orchestration that assumes prompt process exit—cron wrappers, CI steps, Kubernetes Jobs, Supervisor stopwaitsecs, deploy scripts draining queues—must be re-validated.Key questions
--max-time, --timeout, --sleep, and --tries?Stack fit
queue:work.Migration path
composer update the package to 3.6.1; no config publishing or data migration expected.Compatibility
queue:work (e.g., custom commands, tenancy-aware queue packages, or orchestration shims that parse worker exit codes).Sequencing
queue:work --stop-when-empty (cron, CI, deploy scripts, Kubernetes Jobs, batch drain tooling).--max-time and timeout interactions; add a bounded guard where scripts previously assumed fast exit.Maintenance
Support
Scaling
--max-time to cap worker lifetime and prevent long-hanging jobs.Failure modes
stopwaitsecs or grace periods may terminate waiting workers mid-wait, causing retries and duplicate-safe job assumptions to matter.Ramp-up
--stop-when-empty now means "stop when empty or when pending work is permanently blocked," not "exit promptly when nothing is immediately runnable."How can I help you explore Laravel packages today?