kainxspirits/laravel-pubsub-queue
Laravel queue driver for Google Cloud Pub/Sub. Configure a pubsub connection with project, queue/topic naming, retries and timeouts, and optional auto-creation of topics/subscriptions. Ideal for running Laravel jobs over Pub/Sub with minimal setup.
afterCommit() in push subscriptions, improving reliability for synchronous job processing (e.g., webhooks, immediate acknowledgments).google/cloud-pubsub (v1.30.0+ recommended), but no version conflicts introduced in this release.queue:work and dispatch() in a staging environment. Monitor for deprecated methods (e.g., Illuminate\Queue\Jobs\Job).afterCommit() fix (PR #81) may introduce edge cases for transactions or long-running jobs.google/cloud-pubsub or Laravel dependencies may introduce breaking changes.composer.json until stability is confirmed:
"require": {
"google/cloud-pubsub": "^1.30.0",
"kainxspirits/laravel-pubsub-queue": "^0.10.0"
}
afterCommit() for push subscriptions, or stick to pull for reliability?// config/queue.php
'connections' => [
'pubsub' => [
'driver' => 'pubsub',
'project_id' => env('GOOGLE_CLOUD_PROJECT'),
'topic' => env('PUBSUB_TOPIC'),
'subscription' => env('PUBSUB_SUBSCRIPTION'),
'key_file' => env('GOOGLE_APPLICATION_CREDENTIALS'),
'push_endpoint' => env('PUBSUB_PUSH_ENDPOINT'), // For push subscriptions
],
],
afterCommit() ensures push subscriptions work reliably with Laravel’s queue system. Use case:
// Dispatch a job to a push subscription
PubSubJob::dispatch()->onQueue('pubsub-push');
google/cloud-pubsub is updated (composer require google/cloud-pubsub:^1.30.0).afterCommit() fix with:
composer.json to pin the new version.php artisan queue:work pubsub-push --tries=3 --timeout=120
afterCommit() (PR #81). Test with:
ackDeadlineSeconds (default: 10s).use Illuminate\Bus\Queueable;
use Kainxspirits\PubSubQueue\Jobs\PubSubJob;
class MyJob extends PubSubJob {
use Queueable;
// ...
}
/pubsub-push) to receive Pub/Sub messages.Route::post('/pubsub-push', [PubSubPushHandler::class, 'handle']);
config/queue.php and .env for Laravel 12:
GOOGLE_CLOUD_PROJECT=your-project
PUBSUB_TOPIC=your-topic
PUBSUB_SUBSCRIPTION=your-subscription
PUBSUB_PUSH_ENDPOINT=https://your-app.com/pubsub-push
queue:work with explicit queue binding:
# Pull subscription
php artisan queue:work --queue=pubsub
# Push subscription (long-running)
php artisan queue:work --queue=pubsub-push --daemon
pubsub.googleapis.com/subscription/backlog_messages.subscription/oldest_unacked_message_age.google/cloud-pubsub and kainxspirits/laravel-pubsub-queue to specific versions until stability is confirmed:
"require": {
"google/cloud-pubsub": "1.30.0",
"kainxspirits/laravel-pubsub-queue": "0.10.0"
}
queue:flush behavior).How can I help you explore Laravel packages today?