twipi-group / googlecloud-pubsub-php-adapter
google-cloud-php-pubsub 包的 PHP 适配器类。
Requires
- php: ~7.1
- google/cloud-pubsub: ^1.21
Requires (Dev)
- mockery/mockery: ^1.0
- phpunit/phpunit: ^7.0
This package is auto-updated.
Last update: 2024-09-07 23:26:49 UTC
README
一个用于 Google Cloud Pub/Sub 包的 PHP 类适配器。
安装
composer require twipi-group/googlecloud-pubsub-php-adapter
示例
发布
use Google\Cloud\PubSub\PubSubClient; use TwipiGroup\GoogleCloudPubSubPhpAdapter\GcPubSub; $client = new PubSubClient([ 'projectId' => 'your-googlecloud-project-id', ]); $pubsub = new GcPubSub($client); $pubsub->publish('mychannel', 'test first'); $pubsub->publish('mychannel', json_encode(['test' => 'another'])); $pubsub->publish('mytopic', [ 'test' => [0, 1, 2] ]);
消费
use Google\Cloud\PubSub\PubSubClient; use TwipiGroup\GoogleCloudPubSubPhpAdapter\GcPubSub; $client = new PubSubClient([ 'projectId' => 'your-googlecloud-project-id', ]); $pubsub = new GcPubSub($client); // case blocking call $pubsub->subscribe('mychannel', function ($message) { var_dump($message); }); // OR $pubsub->subscribe('mysubscriber', function ($message) { var_dump($message); }, 'mytopic'); // case non blocking call $messages = $pubsub->consume('mychannel'); // OR $messages = $pubsub->consume('mysubscriber', 'mytopic'); foreach ($messages as $message) { var_dump($message); }
函数
使用
function createTopic(string $topicName): Topic
此函数从 $topicName 创建一个主题并返回主题对象。
function getTopic(string $topicName): Topic
此函数从 $topicName 返回现有的主题对象,如果 setAutoCreateTopic 为 true,则创建一个新主题。如果 setAutoCreateTopic 为 false,则抛出异常。
function deleteTopic(string $topicName): Topic
此函数从 $topicName 删除现有主题并返回主题对象。
function updateTopic($topicName, $properties): Topic
此函数更新 $topicName 的现有主题并返回主题对象。注意,主题的名称和 KMS 密钥名称是不可变属性,可能无法修改。https://googleapis.github.io/google-cloud-php/#/docs/google-cloud/v0.131.0/pubsub/topic
function getTopics(): array
此函数返回现有主题对象数组。
function deleteTopics(): array
此函数删除所有现有主题并返回已删除的主题名称数组。
function createSubscription(string $subscriptionName, string $topicName = ''): Subscription
此函数从 $subscriptionName 创建主题并返回订阅对象。如果 setAutoCreateTopicFromSubscription 和 setAutoCreateTopic 都为 true,且 $topicName 为空,则从 $subscriptionName 创建主题。
function getSubscription(string $subscriptionName, string $topicName = ''): Subscription
此函数从 $subscriptionName 返回现有的订阅对象,如果 setAutoCreateSubscription 为 true,则创建一个新的订阅。如果 setAutoCreateSubscription 为 false,则抛出异常。如果 setAutoCreateTopicFromSubscription 和 setAutoCreateTopic 都为 true,且 $topicName 为空,则从 $subscriptionName 创建主题。如果 setAutoCreateTopicFromSubscription 或 setAutoCreateTopic 为 false,且 $topicName 为空,则抛出异常。
function deleteSubscription($subscriptionName): Subscription
此函数从 $subscriptionName 删除现有订阅并返回订阅对象。
function updateSubscription($subscriptionName, $properties): Subscription
此函数更新 $subscriptionName 的现有订阅并返回订阅对象。注意,订阅名称和主题是不可变属性,可能无法修改。https://googleapis.github.io/google-cloud-php/#/docs/google-cloud/v0.131.0/pubsub/subscription
function getSubscriptions(): array
此函数返回现有订阅对象数组。
function consume(string $subscriptionName, string $topicName = ''): array
此函数在拉取后立即返回。您可以通过更改 setMaxMessages 接收此拉取的 x 条消息。如果 setAutoCreateTopic 和 setAutoCreateTopicFromSubscription 都为 true,且 $topicName 为空,则如果主题不存在,将自动从订阅名称创建主题。此函数返回消息数组。
函数 subscribe(string $subscriptionName, callable $handler, string $topicName = '', $infiniteLoop = true): void
默认情况下,该函数由于 $infiniteLoop = true 而形成无限循环。
-
如果 $infiniteLoop 是 true
- 如果 setReturnImmediately 是 true 并且 setDelay > 1 秒,循环将在每次拉取之间每秒休眠一次。
- 如果 setReturnImmediately 是 true 并且 setDelay = 0 秒,循环将每次都工作,这 不推荐 因为它会严重影响系统性能。
- 如果 setReturnImmediately 是 false,(推荐)系统将等待(约90秒)直到至少有一条消息可用,此时 setDelay 无效。
-
如果 $infiniteLoop 是 false
- setReturnImmediately 和 setDelay 无影响,因为只需执行一次循环,只进行一次拉取。
设置
// set max messages number consuming by pull $pubsub->setMaxMessages(2); // 100 by default // set if return immediately after pull $pubsub->setReturnImmediately(true); // false by default // set delay in seconds to wait between each pull // note: if ReturnImmediately is false, this option has no effect. $pubsub->setDelay(2); // 10 by default // set a suffix for subscriptions $pubsub->setTopicSuffix('mysubsriber_'); // empty by default // set debug mode to display pull messages directly to output $pubsub->setDebug(true); // false by default // set if auto create topic when not existing $pubsub->setAutoCreateTopic(false); // true by default // set if auto create subscription when not existing $pubsub->setAutoCreateSubscription(false); // true by default // set if auto create topic from subscription name when consume messages with empty topic name $pubsub->setAutoCreateTopicFromSubscription(false); // true by default
测试
vendor/bin/phpunit Tests
贡献
你可以通过发现错误、提交问题或提议新功能来为此包做出贡献。
许可
本项目采用 MIT 许可协议许可。有关更多信息,请参阅许可文件。