stackkit/laravel-google-cloud-tasks-queue
Use Google Cloud Tasks as a Laravel queue driver. This package dispatches Laravel queued jobs to Cloud Tasks with support for queues, delays, retries, and secure HTTP handlers, making it ideal for serverless and App Engine workloads without managing workers.
Architecture fit. The package is a thin adapter between Laravel's Queue contract and Google Cloud Tasks HTTP-target dispatch: jobs are serialized into task payloads, and Cloud Tasks calls back into the application over HTTPS to execute them. This fits a Laravel monolith or small service fleet already committed to GCP that wants managed queue infrastructure without operating Redis, RabbitMQ, or a database queue. It does not fit workloads with large payloads, very long runtimes, or non-GCP/multi-cloud targets — those are pre-existing constraints of Cloud Tasks (per-task payload ceiling, bounded dispatch deadline, rate/concurrency caps), not of this release, but they should be confirmed against our job profile before adoption.
Integration feasibility. Straightforward: composer require, publish the config, add a connection to config/queue.php, supply project/location/queue/service-account settings via env, and expose a publicly routable HTTPS endpoint with OIDC verification. The friction is IAM, service-account scoping, and ingress/networking — not the package API. Rough order of magnitude: one engineer-day for a first working queue, plus security review of the OIDC callback path.
Technical risk (v6.0.0). The release is a single line: Laravel 13 support. A major version bump for a framework-support-only change strongly implies the maintainer is dropping older Laravel lines, and probably raising the minimum PHP version. The functional surface appears unchanged, so runtime risk is low where we are compatible. The real risk is version-lock coupling: we likely cannot adopt Laravel 13 without v6, and cannot adopt v6 without Laravel 13. That turns a routine OSS dependency into a step-change that must be scheduled with the framework upgrade, not independently. Secondary risk: a Laravel major can shift job serialization or queue contracts even when the driver code is untouched, and that is exactly what a one-line changelog will not tell us.
Key questions.
Queue contract implementation, or the OIDC/auth path that the changelog omits?Stack fit. Laravel 11–13 on Cloud Run, GKE, GCE, or App Engine, with Cloud Tasks as the queue backend. Good fit for GCP-committed teams; poor fit for anything that needs portability across clouds or on-prem.
Migration path. Pin to v5.x while on Laravel ≤12. Adopt v6.0.0 only as a passenger on the Laravel 13 upgrade — ideally in the same PR, so the two version constraints move together. Because the diff is framework support only, expect zero application-code changes: config keys, job classes, and dispatch calls should be untouched. If that expectation is wrong, it will surface immediately in tests.
Compatibility. Verify three things before merging: the illuminate/* constraint set, the PHP version floor, and the google/cloud-tasks SDK version. Then specifically re-test the queue surfaces most likely to drift with a framework major even when the driver is unchanged — chained jobs, dispatchAfterResponse, per-job connection overrides, rate limiting, and job middleware.
Sequencing.
Maintenance. Very little code to own, but the release cadence is now welded to Laravel's annual majors. This is effectively one forced dependency upgrade per year, and it will always land at the same time as the framework upgrade — meaning the two highest-risk changes in the stack are permanently scheduled together. Budget for that concentration rather than treating it as routine.
Support. Single-maintainer open-source package. That is a real bus-factor exposure for a component sitting directly on the job-execution path. Mitigations: keep the surface area small (one connection, standard job classes), be prepared to vendor a fork, and monitor the repo's responsiveness rather than assuming an SLA.
Scaling. Cloud Tasks absorbs dispatch scale, so the bottleneck moves to the HTTP endpoint: request concurrency, cold starts (especially Cloud Run), and queue-level rate and concurrency limits. Keep job payloads small — pass model identifiers rather than serialized models — and tune queue limits rather than scaling the workers.
Failure modes. The characteristic ones for this pattern, none of which this release changes:
Ramp-up. A few hours for anyone fluent in Laravel queues; the unfamiliar surface is GCP-specific — service accounts, OIDC audience configuration, and the Cloud Tasks console. Ship a short runbook alongside adoption: how to inspect a single task, purge a queue, and replay a dead task. Without it, the first production incident will be a slow one.
How can I help you explore Laravel packages today?