Habilitar a sondagem longa no Amazon SQS com o AWS SDK for PHP versão 3 - AWS SDK for PHP

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Habilitar a sondagem longa no Amazon SQS com o AWS SDK for PHP versão 3

A sondagem longa reduz o número de respostas vazias ao permitir que o Amazon SQS espere um tempo especificado para que uma mensagem se torne disponível na fila antes de enviar uma resposta. Além disso, a sondagem longa elimina respostas vazias falsas consultando todos os servidores em vez de apenas uma amostragem de servidores. Para habilitar a sondagem longa, especifique um tempo de espera diferente de zero para mensagens recebidas. Para saber mais, consulte Sondagem longa do SQS.

Os exemplos a seguir mostram como:

  • Defina atributos em uma fila do Amazon SQS para permitir uma sondagem longa, usando. SetQueueAttributes

  • Recupere uma ou mais mensagens usando a sondagem longa. ReceiveMessage

  • Crie uma longa fila de votação usando. CreateQueue

Todo o código de exemplo do AWS SDK for PHP está disponível aqui em GitHub.

Credenciais

Antes de executar o código de exemplo, configure suas credenciais da AWS, conforme descrito em Credenciais. Em seguida, importe o AWS SDK for PHP, conforme descrito em Uso básico.

Definir atributos em uma fila para ativar a sondagem longa

Importações

require 'vendor/autoload.php'; use Aws\Exception\AwsException; use Aws\Sqs\SqsClient;

Código de exemplo

$queueUrl = "QUEUE_URL"; $client = new SqsClient([ 'profile' => 'default', 'region' => 'us-west-2', 'version' => '2012-11-05' ]); try { $result = $client->setQueueAttributes([ 'Attributes' => [ 'ReceiveMessageWaitTimeSeconds' => 20 ], 'QueueUrl' => $queueUrl, // REQUIRED ]); var_dump($result); } catch (AwsException $e) { // output error message if fails error_log($e->getMessage()); }

Recuperar mensagens com sondagem longa

Importações

require 'vendor/autoload.php'; use Aws\Exception\AwsException; use Aws\Sqs\SqsClient;

Código de exemplo

$queueUrl = "QUEUE_URL"; $client = new SqsClient([ 'profile' => 'default', 'region' => 'us-west-2', 'version' => '2012-11-05' ]); try { $result = $client->receiveMessage([ 'AttributeNames' => ['SentTimestamp'], 'MaxNumberOfMessages' => 1, 'MessageAttributeNames' => ['All'], 'QueueUrl' => $queueUrl, // REQUIRED 'WaitTimeSeconds' => 20, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails error_log($e->getMessage()); }

Criar uma fila com sondagem longa

Importações

require 'vendor/autoload.php'; use Aws\Exception\AwsException; use Aws\Sqs\SqsClient;

Código de exemplo

$queueName = "QUEUE_NAME"; $client = new SqsClient([ 'profile' => 'default', 'region' => 'us-west-2', 'version' => '2012-11-05' ]); try { $result = $client->createQueue([ 'QueueName' => $queueName, 'Attributes' => [ 'ReceiveMessageWaitTimeSeconds' => 20 ], ]); var_dump($result); } catch (AwsException $e) { // output error message if fails error_log($e->getMessage()); }