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