twipi-group/googlecloud-pubsub-php-adapter

google-cloud-php-pubsub 包的 PHP 适配器类。

1.1.0 2020-05-05 15:35 UTC

This package is auto-updated.

Last update: 2024-09-07 23:26:49 UTC


README

一个用于 Google Cloud Pub/Sub 包的 PHP 类适配器。

CI Minimum PHP Version Software License

安装

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 返回现有的主题对象,如果 setAutoCreateTopictrue,则创建一个新主题。如果 setAutoCreateTopicfalse,则抛出异常。

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 创建主题并返回订阅对象。如果 setAutoCreateTopicFromSubscriptionsetAutoCreateTopic 都为 true,且 $topicName 为空,则从 $subscriptionName 创建主题。

function getSubscription(string $subscriptionName, string $topicName = ''): Subscription

此函数从 $subscriptionName 返回现有的订阅对象,如果 setAutoCreateSubscriptiontrue,则创建一个新的订阅。如果 setAutoCreateSubscriptionfalse,则抛出异常。如果 setAutoCreateTopicFromSubscriptionsetAutoCreateTopic 都为 true,且 $topicName 为空,则从 $subscriptionName 创建主题。如果 setAutoCreateTopicFromSubscriptionsetAutoCreateTopicfalse,且 $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 条消息。如果 setAutoCreateTopicsetAutoCreateTopicFromSubscription 都为 true,且 $topicName 为空,则如果主题不存在,将自动从订阅名称创建主题。此函数返回消息数组。

函数 subscribe(string $subscriptionName, callable $handler, string $topicName = '', $infiniteLoop = true): void

默认情况下,该函数由于 $infiniteLoop = true 而形成无限循环。

  • 如果 $infiniteLooptrue

    • 如果 setReturnImmediatelytrue 并且 setDelay > 1 秒,循环将在每次拉取之间每秒休眠一次。
    • 如果 setReturnImmediatelytrue 并且 setDelay = 0 秒,循环将每次都工作,这 不推荐 因为它会严重影响系统性能。
    • 如果 setReturnImmediatelyfalse,(推荐)系统将等待(约90秒)直到至少有一条消息可用,此时 setDelay 无效。
  • 如果 $infiniteLoopfalse

    • setReturnImmediatelysetDelay 无影响,因为只需执行一次循环,只进行一次拉取。

设置

// 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 许可协议许可。有关更多信息,请参阅许可文件。