gdg-tangier/cloud-pubsub
最新稳定版本:v0.1.3
Composer 安装命令:
composer require gdg-tangier/cloud-pubsub
包简介
Google Cloud pub-sub for laravel
关键字:
README 文档
README
Why?
Build a scalable Laravel apps using event-driven microservices architecture (Pub/Sub), this tool adds the ability for your Laravel applications to communicate with each other using Google Cloud Pub/Sub.
Define your architecture.
First of all, you need to create subscriptions and topics in Google Cloud Platform, or you can use the cli.
Installation.
composer require gdg-tangier/cloud-pubsub
Configuration.
config/queue.php
You can define multiple subscribers (queue connections) config in config/queue.php, the app can subscribe to multiple subscriptions.
Example.
'pubsub' => [ 'driver' => 'pubsub', 'queue' => env('SUBSCRIPTION'), 'credentials' => [ 'keyFilePath' => storage_path(env('PUBSUB_CLIENT_KEY')), // credentials file path '.json' 'projectId' => env('GCP_PROJECT_ID'), ], ],
config/pubsub.php
Here where you can define your subscriptions jobs, events and topics mappings.
Example.
<?php return [ /* * GCP Credentials. */ 'credentials' => [ 'keyFilePath' => storage_path(env('PUBSUB_CLIENT_KEY', 'client')), 'projectId' => env('GCP_PROJECT_ID'), ], /* * Here where you map events name with Google Pub/Sub topics. * * Means, map each event name to specific Google Pub/Sub topic. */ 'events' => [ 'event_name' => '__YOUR_TOPIC_NAME__', ], /* * Here where you can tie the subscription classes (jobs) to topics. * * Means, map each subscription job to a specific Google pubsub topic. * The subscription job is responsible for handling the incoming data * from a Google Pub/Sub topic. */ 'subscriptions' => [ \App\PubSub\DummyJob::class => '__YOUR_TOPIC_NAME__', ], ];
Create subscription class.
php artisan pubsub:make-subscriber <Name>
A subscription class will be created at app/Subscribers
Example.
<?php namespace App\Subscribers; use GDGTangier\PubSub\Subscriber\SubscriberJob; use GDGTangier\PubSub\Subscriber\Traits\JobHandler; class UserUpdated { use JobHandler; /** * @var mixed */ public $payload; /** * @var \GDGTangier\PubSub\Subscriber\SubscriberJob */ public $job; /** * UserUpdated constructor. * * @param \GDGTangier\PubSub\Subscriber\SubscriberJob $job * @param $payload */ public function __construct(SubscriberJob $job, $payload) { $this->job = $job; $this->payload = $payload; } /** * Execute the job. * * @return void */ public function handle() { // } }
Publishing data to the cloud.
- Using facade.
use GDGTangier\PubSub\Publisher\Facades\PublisherFacade; PublisherFacade::publish('MyData', 'event_name');
- Using service container.
$publisher = app('gcloud.publisher.connection'); $publisher->publish('MyData', 'event_name');
- Using artisan command.
php artisan pubsub:publish <message> <event>
Subscriptions worker.
php artisan pubsub:subscribe <connection>
Or alternatively you can run php artisan queue:work <connection>
Note: To keep the queue:subscribe process running permanently in the background, you should use a process monitor such as supervisor to ensure that the queue worker does not stop running.
Using GCP Pub/Sub emulator.
You need to install GCP command line tool and Setup Topics/Subscriptions
To use the emulator:
-
Go to the
AppServiceProvider@registerand addPubSub::useEmulatorCredentials() -
Export the pubsub emulator host
export PUBSUB_EMULATOR_HOST=localhost:8085 -
Run the emulator,
php artisan pubsub:emulator
Testing.
You need to install GCP command line tool.
- Run the pubsub emulator
./emulator.sh - Export the pubsub emulator host
export PUBSUB_EMULATOR_HOST=localhost:8085 - Run
phpunit
统计信息
- 总下载量: 51.65k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 50
- 点击次数: 3
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-01-04