Example:
Create subscription through a topic
use Google\Cloud\ServiceBuilder;
$cloud = new ServiceBuilder();
$pubsub = $cloud->pubsub();
$topic = $pubsub->topic('my-topic-name');
$subscription = $topic->subscription('my-new-subscription');
Create subscription through PubSubClient
use Google\Cloud\PubSub\PubSubClient;
$pubsub = new PubSubClient([
'projectId' => 'my-awesome-project'
]);
$subscription = $pubsub->subscription(
'my-new-subscription',
'my-topic-name'
);
public function __construct(Subscription $subscription, $job, LoggerInterface $logger) { // [START callback] $callback = function ($response) use($job, $subscription, $logger) { $ackIds = []; $messages = json_decode($response->getBody(), true); if (isset($messages['receivedMessages'])) { foreach ($messages['receivedMessages'] as $message) { $attributes = $message['message']['attributes']; $logger->info(sprintf('Message received for book ID "%s" ', $attributes['id'])); // Do the actual work in the LookupBookDetailsJob class $job->work($attributes['id']); $ackIds[] = $message['ackId']; } } // Acknowledge the messsages have been handled if (!empty($ackIds)) { $subscription->acknowledgeBatch($ackIds); } }; // [END callback] $this->callback = $callback; $this->subscription = $subscription; $this->connection = new AsyncConnection(); }
public function testInfoNoRequest() { $sub = ['subscription' => 'projects/project-id/subscriptions/subscription-name', 'topic' => 'projects/project-id/topics/topic-name']; $this->connection->getSubscription()->shouldNotBeCalled(); $subscription = new Subscription($this->connection->reveal(), 'project-id', 'subscription-name', 'topic-name', true, $sub); $res = $subscription->info(); $this->assertEquals($res, $sub); }
public function testIam() { $subscription = new Subscription($this->connection->reveal(), 'subscription-name', 'topic-name', 'project-id'); $this->assertInstanceOf(Iam::class, $subscription->iam()); }