Cloud Tasks queue driver for Laravel apps running inside Google App Engine.
firevel/cloud-tasks-queue-driver is a Laravel package for cloud tasks queue driver for laravel apps running inside google app engine..
It currently has 4 GitHub stars and 12.933 downloads on Packagist (latest version 1.2.0).
Install it with composer require firevel/cloud-tasks-queue-driver.
Discover more Laravel packages by firevel
or browse all Laravel packages to compare alternatives.
Last updated
A Laravel queue driver for Google Cloud Tasks, enabling serverless job processing for applications running on Google App Engine or Google Cloud Run.
Compatible with both Firevel and standard Laravel applications.
composer require firevel/cloud-tasks-queue-driver
The package auto-discovers and registers itself via Laravel's package discovery.
Add the connection to your config/queue.php:
'connections' => [
'cloudtasks' => [
'driver' => 'cloudtasks',
'project' => env('GOOGLE_CLOUD_PROJECT'),
'location' => env('CLOUD_TASKS_LOCATION', 'us-central1'),
'queue_name' => env('CLOUD_TASKS_QUEUE', 'default'),
'route' => env('CLOUD_TASKS_ROUTE', '/_cloudtasks'),
// App Engine specific (optional)
'service' => env('GAE_SERVICE'),
'version' => env('GAE_VERSION'),
// Cloud Run specific (optional)
'url' => env('CLOUD_TASKS_URL'),
],
],
Set your default queue connection in .env:
QUEUE_CONNECTION=cloudtasks
CLOUD_TASKS_LOCATION=us-central1
Note: The
locationmust match your App Engine or Cloud Run region.
| Option | Description |
|--------|-------------|
| project | Google Cloud project ID |
| location | Cloud Tasks queue location (must match your compute region) |
| queue_name | Default queue name |
| route | HTTP endpoint path for task callbacks |
| service | App Engine service name (falls back to the GAE_SERVICE env variable when not set) |
| version | App Engine version to route tasks to (when not set, tasks go to the service's default version) |
| url | Custom URL for Cloud Run or when behind a proxy/load balancer |
Create a queue using gcloud:
gcloud tasks queues create default
Or via queue.yaml:
queue:
name: default
rate: 500/s
See the Cloud Tasks documentation for advanced queue configuration.
Use Laravel's standard queue API:
// Dispatch a job
dispatch(new ProcessOrder($order));
// Dispatch with delay
dispatch(new ProcessOrder($order))->delay(now()->addMinutes(5));
// Dispatch to a specific queue
dispatch(new ProcessOrder($order))->onQueue('orders');
Note: Queue names map directly to Cloud Tasks queues, so
onQueue('orders')requires a Cloud Tasks queue namedordersto exist.
Unlike traditional queue drivers, there is no queue:work process. Cloud Tasks delivers each job back to your application over HTTP:
APP_KEY./_cloudtasks by default), which the package registers automatically.Note: Since job payloads are signed with
APP_KEY, rotating the key will invalidate tasks that were queued before the rotation.
maxAttempts, backoff, etc.). A failed job returns a 500 response and Cloud Tasks redelivers it according to the queue's retry policy.$tries, it is marked as failed once the limit is reached and the handler responds with a 200 so Cloud Tasks stops redelivering it. $job->attempts() is 1-based (1 on the first attempt), derived from the X-CloudTasks-TaskRetryCount / X-AppEngine-TaskRetryCount headers.$this->release($delay)) creates a fresh Cloud Task with the same payload, since Cloud Tasks has no native release. The attempt count is carried over in the payload. This also makes the WithoutOverlapping job middleware work as expected — overlapping jobs are pushed back instead of lost. It requires a cache store that supports atomic locks.ShouldBeUnique) work out of the box; the unique lock is handled by Laravel at dispatch time and also requires a lock-capable cache store.maxConcurrentDispatches=1 on the Cloud Tasks queue — no application code needed.The test suite uses Orchestra Testbench and runs without any Google Cloud credentials (the Cloud Tasks client is mocked).
composer install
composer test
Tests run automatically via GitHub Actions on PHP 8.2, 8.3, and 8.4 for every push and pull request.
MIT