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

Busque Laravel Package

mgdigital/busque

Busque is a lightweight command bus for Laravel that maps commands to dedicated handlers, keeping controllers and services thin. It supports middleware pipelines and queued command execution, making it easy to organize complex application logic with a clean, testable CQRS-style approach.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. Busque is a self-contained job pipeline: a long-running worker daemon, a cron-like scheduler, and a Redis-backed state store with an operator UI, wrapped for Laravel via a service provider. Architecturally it is an alternative to Laravel's native queue plus schedule:run, not a layer on top of them. That distinction is decisive, because it competes with the exact subsystem the framework has since absorbed and productized (Horizon, queue:work, schedule:work, database-backed failed jobs). Adopting it means opting out of a core framework subsystem and owning the replacement indefinitely.

Fit is therefore narrow: a Laravel 5.5–8 application on PHP 7.x that wants queue, scheduler, and dashboard from a single dependency and is not prepared to build or configure Horizon-style observability. Outside that envelope it is a poor architectural match regardless of code quality.

Integration feasibility. MIT license, no commercial entanglement, no runtime licensing cost. Installation is composer require plus provider registration — trivially feasible in isolation. The blockers are not installation; they are the version envelope and the maintenance posture.

Technical risk.

  • Archived and PHP 7 only. PHP 7.4 reached end of life in November 2022. Anything pinned to busque is effectively pinned to Laravel ≤8 and off the security-patch train for the runtime itself. This is the dominant risk and it compounds every year it stays.
  • Provenance gap. The repository is unverifiable ("unknown"), so commit history, issue triage, and maintainer identity cannot be audited. Combined with archived status, treat the code as untrusted third-party source: vendor it and review it, do not consume it blind from Packagist.
  • Bespoke abstraction tax. Busque defines its own command/job contract, distinct from ShouldQueue/Queueable. Job classes are not portable to or from the framework queue, so the engineering investment is stranded on exit.
  • Redis treated as durable storage, not cache. Queue state is data. Correctness depends on maxmemory-policy noeviction, and support for TLS, ACL users, and cluster topologies is unverified and unlikely given the Redis 3–5 era. Validate against your actual managed Redis endpoint, not localhost.
  • Embedded web UI is an authenticated surface inside your application that you now own, with no upstream CVE response path.
  • Low adoption signal. 117 stars and a 0.51 composite score indicate thin community validation; expect few public answers and dated ones.

Key questions for the team.

  1. What PHP and Laravel versions are actually in the estate, and is there a dated, funded plan to leave them?
  2. Is the real requirement "a queue," or "a queue with operator visibility and cron scheduling"? If the latter, Horizon plus schedule:work may satisfy it with zero new dependencies.
  3. Who forks and owns this — a named individual with allocated hours on the roadmap, or nobody?
  4. Can we guarantee noeviction on the Redis instance under memory pressure, in writing, with alerting?
  5. Can we accept at-least-once delivery and post-crash recovery without a dead-letter mechanism we control?

Integration Approach

Stack fit. Green-light only where the application is PHP 7.x / Laravel ≤8 and the realistic alternative is building a scheduler and queue-visibility layer in-house. There, busque is a defensible short-term buy against weeks of internal work. Where the stack is PHP 8.1+ / Laravel 9+, decline — the compatibility work exceeds the value delivered by an archived package with modest adoption.

Migration path. Assume no in-flight migration. Busque's payload format and job contract are its own; jobs already queued under the framework's queue driver cannot be drained into it. The realistic sequence is:

  1. Drain the existing queue to zero.
  2. Cut over in a maintenance window.
  3. Re-register all scheduled tasks in busque's scheduler syntax.
  4. Disable the framework's schedule:run/schedule:work to prevent double-firing.

Budget for this being one-way in practice: reversing it means the same operation plus a rewrite of any job that leaned on busque-specific behaviour. Document the migration as irreversible in the design record.

Compatibility work, in order of effort.

  1. Vendor and pin. Use a VCS path repository or replace so a Packagist delisting cannot break builds; pin to a commit SHA, never a floating constraint.
  2. Fork to an internal branch if PHP 8 support is on the roadmap — expect typed-property collisions and removed PHP 7 idioms, plus test-suite resurrection. Do not start this unless the upgrade is genuinely funded.
  3. Validate Redis. Confirm server version, noeviction, TLS, ACL, and key-prefix behaviour against the real managed endpoint.
  4. Isolate the daemon into its own process unit or container so it can be restarted and scaled independently of the web tier.
  5. Namespace aggressively. Never share a Redis logical database or key prefix with the framework's own queue or cache.

Sequencing. Fork-and-pin → local validation of dispatch, delay, and schedule semantics → staging soak with realistic volume including delayed and scheduled jobs (not just happy-path dispatch) → production on one non-critical queue → broaden. Gate each step on observed behaviour, not on the README.

Operational Impact

Maintenance. Archived means your team is the maintainer. Realistic cost: one to three engineer-weeks to fork, pin, containerize, and reach credible familiarity with the codebase, plus a standing 10–15% of one engineer for security triage and PHP/Redis drift. Every subsequent framework upgrade acquires a "does busque still work" gate. That recurring tax — not the install time — is the number to put in front of the sponsor.

Support. No upstream fixes and no maintainer to escalate to. The community is small (117 stars, low score), so public answers are sparse and dated. Institutional knowledge must be written down deliberately or it leaves with the engineer who wired it up.

Scaling. The daemon is a per-node process: you scale by adding processes and hosts, not by autoscaling on queue depth without building that control yourself. Throughput is bounded by Redis round-trips and configured worker count. There is no first-class backpressure, rate limiting, or fair priority handling comparable to a modern queue manager. The scheduler is a single logical component — run two instances and you get duplicate execution unless every scheduled command is idempotent.

Failure modes to design around explicitly.

  • Redis eviction equals silent job loss. Highest severity. A cache-style allkeys-lru policy under memory pressure deletes queued jobs with no error surfaced anywhere. Enforce noeviction and alert on memory headroom.
  • Orphaned reserved jobs. A worker dying mid-job leaves the job stuck in a reserved state with no automatic recovery. Requires a reaper routine and an on-call runbook.
  • Double execution. Scheduler HA, or a job exceeding its reservation timeout, produces duplicate side effects. Mandate idempotency keys and at-least-once design in every consumer.
  • Daemon death is silent. Without a supervisor (systemd, supervisord, Kubernetes restart policy) queued work simply stops and the application looks healthy. Health-check on heartbeat and queue depth, not process liveness alone.
  • Credential and connectivity drift. Managed Redis credential rotation or TLS enforcement will break the daemon on the next deploy. Automate secret injection and test rotation.
  • UI exposure. Place the dashboard behind SSO or VPN — application auth alone is not sufficient for an unmaintained surface.

Ramp-up. New engineers must learn busque's bespoke command contract, its scheduler expression format, and its Redis key layout — knowledge that transfers to no other system and appears in no hiring pipeline. Estimate two to five days for a mid-level engineer to become productive, and record it as a permanent onboarding line item rather than a one-time cost.

Recommendation posture. Treat busque as a technical-debt acquisition with a defined exit, not a solution. Approve only with a named owner, a forked-and-pinned repository, a dated plan to migrate to Horizon plus schedule:work (or another maintained scheduler) within two quarters, and explicit written acceptance of the Redis durability requirements above. Otherwise decline and build the visibility layer on framework primitives.

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.
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log