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();
}