Aktivieren von Langabfragen in Amazon SQS mit AWS SDK for PHP Version 3 - AWS SDK for PHP

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Aktivieren von Langabfragen in Amazon SQS mit AWS SDK for PHP Version 3

Langabfragen reduzieren die Anzahl leerer Antworten, da Amazon SQS eine bestimmte Zeit warten kann, bis eine Nachricht in der Warteschlange verfügbar ist, bevor eine Antwort gesendet wird. Durch Langabfragen lassen sich außerdem falsch leere Antworten vermeiden, indem die Anfrage statt an eine Auswahl an Servern an alle Server gesendet wird. Zum Aktivieren von Langabfragen geben Sie für empfangene Nachrichten eine Wartezeit ungleich Null an. Weitere Informationen finden Sie unter SQS Langabfragen.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:

  • Legen Sie Attribute in einer Amazon SQS-Warteschlange fest, um lange Abfragen mit zu ermöglichenSetQueueAttributes.

  • Rufen Sie eine oder mehrere Nachrichten mit Langabfragen mit abReceiveMessage.

  • Erstellen Sie eine Langabfragewarteschlange mit CreateQueue.

Der gesamte Beispielcode für die AWS SDK for PHP ist hier auf GitHubverfügbar.

Anmeldeinformationen

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen, wie unter beschriebenAnmeldeinformationen. Importieren Sie dann die AWS SDK for PHP, wie unter beschriebenGrundlegende Verwendung.

Festlegen von Attributen in einer Warteschlange, um lange Abfragen zu ermöglichen

Importe

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

Beispiel-Code

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

Abrufen von Nachrichten mit Langabfrage

Importe

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

Beispiel-Code

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

Erstellen einer Warteschlange mit Langabfrage

Importe

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

Beispiel-Code

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