Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Laravel Queue Debouncer Laravel Package

mpbarlow/laravel-queue-debouncer

Debounce Laravel queued jobs so rapid repeated dispatches collapse into a single run. This package helps prevent queue flooding and duplicate work by ensuring only the latest job in a debounce window is processed, with simple integration into existing Laravel queues.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Event-storm containment: Any feature where a single domain event can fire many times in quick succession (webhook bursts, bulk imports, model saves in a loop, cache invalidation, search indexing, notification fan-out) can collapse N dispatches into one execution instead of paying for all of them.
  • Build vs. buy: Debouncing looks like a 20-line job middleware and is not. Correct behaviour requires a uniqueness/lock strategy, a time window, and a defined edge (leading vs. trailing) — all of which interact badly with retries, failed jobs, and multiple queue workers. Buying a single-purpose, small-surface package is cheaper than owning that correctness burden.
  • Roadmap enabler: Makes "recompute derived state on write" a viable pattern. You can dispatch a refresh job on every write without needing to build batching into each feature team's code.
  • Cost/scale lever: Directly reduces queue throughput and worker count for write-heavy or integration-heavy surfaces — a capacity decision, not just a code-style one.
  • Upgrade risk: 3.2.0 adds Laravel 13 support, so this dependency does not become the reason a service is pinned to an older framework. That keeps it off the platform-upgrade critical path.

When to Consider This Package

Adopt when:

  • You have repeat-dispatch hot spots — the same job class being queued many times per minute for the same logical entity.
  • You want the debounce policy declared next to the job rather than reimplemented per feature.
  • Your workload is idempotent or safely collapsible — running once instead of five times is acceptable to the business.
  • You need to stay current on Laravel and are planning a 12 → 13 upgrade.
  • The team is small and you would rather not own concurrency-sensitive scheduling code.

Look elsewhere or build your own when:

  • You need payload aggregation/fan-in (merging arguments from suppressed dispatches into one job) — debouncing drops duplicates, it does not combine them.
  • You need cross-service or cross-datastore deduplication — the guarantee is bounded by your queue backend and cache/lock store.
  • You need strict at-least-once execution with auditability; collapsing jobs is a deliberate loss of individual events, which may conflict with compliance or billing requirements.
  • Correctness depends on every dispatch running (e.g., per-event ledger writes, per-user notifications with distinct content).
  • You already run Horizon with WithoutOverlapping/uniqueFor and your needs are fully covered by first-party primitives — adding a dependency for parity is not worth the surface area.
  • Your queue driver or deployment (multi-region, multiple independent clusters) means lock scope is unreliable.

Fit caveats to verify before committing: the debounce window semantics, behaviour on job failure and retry, and whether suppressed dispatches are silently dropped or observable. These determine whether the package is safe for money-touching or customer-visible flows.

How to Pitch It (Stakeholders)

To executives: A small, single-purpose dependency that stops the same background job from being queued dozens of times in a burst. The result is less wasted compute and lower queue infrastructure cost on our busiest write paths, without asking every feature team to hand-roll batching. Version 3.2.0 adds Laravel 13 support, so it stays aligned with our framework upgrade plans rather than becoming a blocker. Cost is one dependency and a small amount of team familiarity; the alternative is owning concurrency-sensitive scheduling code ourselves.

To engineering: Declare the debounce on the job instead of rebuilding a lock-and-window pattern per feature. It removes a class of duplicate-work bugs and reduces worker pressure on noisy dispatch sites. Trade-off to accept explicitly: suppressed dispatches are dropped, not merged, so it fits idempotent recompute/refresh jobs and does not fit per-event ledger or per-recipient notification flows. Before rollout, confirm the window semantics, retry/failure behaviour, and lock backend assumptions in staging, and pilot on one high-frequency non-critical job (search indexing or cache refresh) with queue depth and job-volume metrics before and after.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels
wazza/laravel-db-encryption
hokny/laravel-generator
vonsogt/backup
jengo/queues
jeremykenedy/laravel-observability
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums