tdonselaar/googlecloud-pubsub-php-adapter

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

dev-master / 1.0.x-dev 2024-01-01 11:49 UTC

This package is not auto-updated.

Last update: 2024-09-24 14:01:17 UTC


README

这是一个用于 Goolge Cloud PubSub 包的 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 返回现有的主题对象,如果 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 创建一个主题并返回订阅对象。如果 setAutoCreateTopicFromSubscriptionsetAutoCreateTopic 都设置为 true$topicName 为空,则从 $subscriptionName 创建一个主题。

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

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

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

由于 $infiniteLoop = true,此函数默认为无限循环。

  • 如果 $infiniteLooptrue

    • 如果 setReturnImmediatelytruesetDelay > 1 秒,循环将在每次拉取之间每秒休眠一次
    • 如果 setReturnImmediatelytruesetDelay = 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 许可证条款授权。有关更多信息,请参阅许可证文件。