A Google Cloud adapter for the php-pubsub package.
composer require superbalist/php-pubsub-google-cloud
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . __DIR__ . '/../your-gcloud-key.json');
$client = new \Google\Cloud\PubSub\PubSubClient([
'projectId' => 'your-project-id-here',
]);
$adapter = new \Superbalist\PubSub\GoogleCloud\GoogleCloudPubSubAdapter($client);
// disable auto topic & subscription creation
$adapter->setAutoCreateTopics(false); // this is true by default
$adapter->setAutoCreateSubscriptions(false); // this is true by default
// set a unique client identifier for the subscriber
$adapter->setClientIdentifier('search_service');
// consume messages
// note: this is a blocking call
$adapter->subscribe('my_channel', function ($message) {
var_dump($message);
});
// publish messages
$adapter->publish('my_channel', 'HELLO WORLD');
$adapter->publish('my_channel', json_encode(['hello' => 'world']));
$adapter->publish('my_channel', 1);
$adapter->publish('my_channel', false);
Google Cloud PHP v0.12.0 added support for communication over the gRPC protocol.
gRPC is great for high-performance, low-latency applications, and is highly recommended in cases where performance and latency are concerns.
The library will automatically choose gRPC over REST if all dependencies are installed.
- gRPC PECL extension
- google/proto-client-php composer package
- googleapis/proto-client-php composer package
pecl install grpc
composer require google/gax
composer require google/proto-client
Google Cloud v0.33.0 added support for queueing messages and publishing in the background. This is available in version 5+ of this package which requires a min version of google/cloud ^0.33.0.
You can enable background batch messaging by setting $backgroundBatching
to true
when constructing the
GoogleCloudPubSubAdapter
or by calling setBackgroundBatching(true)
on an existing adapter.
If the semaphore and pcntl PHP extensions are
enabled AND the IS_BATCH_DAEMON_RUNNING
ENV var is set to true
, the library will queue messages to be published by
the Batch Daemon.
The Batch Daemon needs to be manually run as a long-lived background process.
For all other cases, messages will be queued in memory and will be published before the script terminates using a vendor registered shutdown handler.
Please Note
This is marked by google/cloud as an experimental feature & may change before release in backwards-incompatible ways.
The library comes with examples for the adapter and a Dockerfile for running the example scripts.
Run make up
.
You will start at a bash
prompt in the /opt/php-pubsub
directory.
If you need another shell to publish a message to a blocking consumer, you can run docker-compose run php-pubsub-google-cloud /bin/bash
To run the examples:
$ php examples/GoogleCloudConsumerExample.php
$ php examples/GoogleCloudPublishExample.php (in a separate shell)