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 Laravel Package

enqueue/laravel-queue

Integrates Laravel’s queue system with Enqueue, providing a transport-agnostic queue driver for sending and consuming jobs through brokers such as AMQP, Redis, and others. Useful for apps already using Enqueue or needing flexible message transports.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • The package is a thin adapter, not a framework fork. It registers a custom Laravel queue connector (driver => 'enqueue') and supplies a Queue implementation plus a Job wrapper that translates Enqueue messages into Illuminate\Contracts\Queue\Job. It hooks into Laravel's documented extension point, so it is architecturally non-invasive and reversible.
  • The dependency direction is the concern: Laravel's queue semantics (attempts, backoff, release, delete, timeout, failed-job capture) must be mapped onto Enqueue's transport-agnostic primitives, and that mapping is lossy for several transports. Every fidelity question ("does backoff actually work here?") is answered per-transport, not by the package.
  • It is a capability gap-filler. Laravel has no first-party AMQP/RabbitMQ, Kafka, STOMP, or PubSub driver; Enqueue supplies those. That is the entire value proposition.

Integration feasibility

  • Mechanically easy: composer require enqueue/laravel-queue, provider auto-discovery, one connection block in config/queue.php, transport config in config/enqueue.php. An afternoon spike is realistic.
  • Feasibility in production is a different question and depends almost entirely on the chosen transport. RabbitMQ/AMQP is the strongest case. Redis, SQS, or database — where Laravel already ships first-party drivers — this package is strictly downside.

Technical risk

  • Bus factor. 240 stars, 0 reported dependents, small contributor base. The enqueue ecosystem itself has had sporadic release cadence.
  • Laravel API drift. The Job contract has grown steadily (job batching, middleware, retryUntil, failOnTimeout, JobAttempted/JobProcessed events). Adapters that don't track these lose features silently — batches never complete, middleware never fires. This is the highest-severity risk because it fails quietly.
  • Horizon exclusion. Horizon is Redis-only and will not manage this connection. For most Laravel shops that removes the primary observability and autoscaling surface.
  • Semantic mismatch. Delays, priorities, per-message TTL, max attempts, and dead-lettering are broker-specific; Laravel callers expect uniform behavior across connections.
  • Serialization/interop. Laravel job payloads are PHP-serialized inside the Enqueue message envelope. Any non-Laravel consumer of the same queue needs that contract documented, or interop breaks at the worst moment.
  • Failure visibility. Must verify whether failed jobs land in failed_jobs and whether queue:retry / queue:forget behave as on-call expects.
  • Version skew. Pin enqueue/* and the transport implementation (ext-amqp vs amqplib) deliberately; mismatches surface as runtime fatals.

Key questions

  1. Which Laravel versions (10/11/12) are actually exercised in CI, versus merely allowed by composer.json?
  2. Are batching, job middleware, retryUntil, and failure hooks supported — or silently ignored?
  3. Which transports are first-class versus best-effort?
  4. Where do failed jobs go, and does queue:failed see them?
  5. What has the issue/PR response time been over the last 12 months?
  6. What is our upgrade path when Laravel ships a breaking queue contract change?
  7. Is the app idempotent under at-least-once delivery and possible reordering?

Integration Approach

Stack fit

  • Adopt only where a specific broker requirement exists and Laravel has no native driver — realistically RabbitMQ/AMQP, Kafka, STOMP, or PubSub.
  • Do not adopt as a general-purpose queue upgrade. Against Redis/SQS/database it trades a well-documented, Horizon-compatible first-party path for an under-maintained adapter with no upside.

Migration path

  1. Compatibility matrix first — Laravel version × target transport × features we actually use (delay, retry, batch, middleware, timeout). Written down, not assumed from the release date.
  2. Spike on a branch, registering the enqueue connection alongside existing connections. Prove publish → consume → retry → fail end to end.
  3. Canary one bounded, idempotent job class — notifications or exports. Never payments or anything order-sensitive.
  4. Expand queue by queue, keeping native connections live for rollback until the canary has run clean through at least one failure incident.
  5. Write an ADR naming the transport, the feature gaps accepted, the owner, and the exit path back to native drivers.

Compatibility

  • Verify PHP and Laravel constraints directly against composer.json; a 2025 release date does not imply Laravel 12 support.
  • queue:work enqueue should function if the connector is correct, but confirm --queue priority lists, --max-time, --tries, and --timeout against the chosen transport.
  • Plan an observability substitute for Horizon before the canary, not after.
  • No new infrastructure if the broker already exists. If it doesn't, you are adding a broker — treat that as the dominant cost, not the Composer package.

Sequencing Matrix → spike → canary → incremental rollout. The temptation is to start with the highest-value queue; resist it. Start with the queue whose failure is cheapest to absorb.

Operational Impact

Maintenance

  • Budget for self-support and price in the fork. The connector is a few hundred lines; vendoring and owning it is a credible, bounded mitigation and should be an explicit line item in the adoption decision, not a contingency.
  • Assign a named engineer as owner. "The platform team" is how this becomes orphaned.

Support

  • Expect unanswered issues. Debugging means reading both Enqueue and Laravel queue internals. This raises the skill floor for anyone touching queue infrastructure.

Scaling

  • Throughput scales with the broker, not this package. Worker scaling is unchanged (queue:work in containers).
  • Without Horizon you lose the built-in autoscaling signal. Wire broker queue-depth metrics into your own autoscaler (KEDA or equivalent) as part of the rollout.
  • Prefetch and consumer concurrency are tuned in Enqueue transport config, not Laravel config — a non-obvious split that will confuse on-call.

Failure modes to plan for

  • Silent feature loss after a Laravel upgrade (batches never complete, middleware never runs) — the most dangerous because nothing errors.
  • Failed jobs absent from failed_jobs, so on-call looks in the wrong place.
  • Duplicate delivery and out-of-order processing; the application must be idempotent.
  • Poison messages looping with no dead-letter policy.
  • Worker hangs on transport disconnect — verify heartbeat and reconnect behavior under a broker restart.
  • Message-format lock-in for any consumer outside Laravel.

Ramp-up

  • Moderate. Engineers must hold two mental models — Laravel queues and Enqueue transports — plus the mapping between them. A senior engineer is productive in days; confident in the failure semantics in weeks.
  • The single highest-leverage onboarding artifact is a mapping table: Laravel concept → Enqueue concept → behavior on transport X. Write it during the spike, while the surprises are fresh.

TPM recommendation

  • Narrow, deliberate adoption where RabbitMQ or Kafka is a hard requirement. Otherwise stay native.
  • A score of 2.88 with 0 dependents means this should not become load-bearing infrastructure without a named owner, a documented feature-gap list, and a fork plan on the shelf.
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.
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource