我如何从Google pubsub接收推送消息

时间:2018-07-23 10:16:19

标签: publish-subscribe google-cloud-pubsub

我已经创建了新主题和新订阅并设置了投放类型:推送并设置了终点URL

index.php:

<?php
    print_r($_POST);
    $data = json_encode($_POST);
    print_R($data);
    $fp = fopen('data.txt', 'a+');
    fwrite($fp, $data);
    fclose($fp);
?>

当发布消息时,我想从此端点处理数据,例如,将数据保存到文件中。

已创建文件,但其中array []为空。

我的php code中的任何问题,数据是否存储在$_POST中还是我需要使用其他方式。

1 个答案:

答案 0 :(得分:0)

要获取发布/订阅消息,您需要使用Google发布/订阅库。假设您已将订阅端点设置为URL,则代码应类似于以下内容:

use Google\Cloud\PubSub\PubSubClient;

$projectId = "YOUR-PROJECT-ID";
$subscriptionName = "YOUR-SUBSCRIPTION-NAME";

$pubsub = new PubSubClient([
    'projectId' => $projectId,
]);
$subscription = $pubsub->subscription($subscriptionName);

$pullMessages = [];
foreach ($subscription->pull(['returnImmediately' => true]) as $pullMessage) {
    $pullMessages[] = $pullMessage;
    $msg = $pullMessage->data();

    $fp = fopen('data.txt', 'a+');
    fwrite($fp, $msg);
    fclose($fp);
}

// acknowledge PULL messages
if ($pullMessages) {
    $subscription->acknowledgeBatch($pullMessages);
}

您可以找到示例here。以及更详细的说明here