Mengaktifkan polling panjang di Amazon AWS SDK for PHP SQS dengan Versi 3 - AWS SDK for PHP

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengaktifkan polling panjang di Amazon AWS SDK for PHP SQS dengan Versi 3

Polling panjang mengurangi jumlah respons kosong dengan mengizinkan Amazon SQS menunggu waktu tertentu agar pesan tersedia dalam antrian sebelum mengirim respons. Selain itu, polling panjang menghilangkan respons kosong palsu dengan menanyakan semua server alih-alih pengambilan sampel server. Untuk mengaktifkan polling panjang, tentukan waktu tunggu bukan nol untuk pesan yang diterima. Untuk mempelajari lebih lanjut, lihat SQS Long Polling.

Contoh berikut menunjukkan cara:

  • Tetapkan atribut pada antrean Amazon SQS untuk mengaktifkan polling panjang, menggunakan. SetQueueAttributes

  • Ambil satu atau beberapa pesan dengan polling panjang menggunakan. ReceiveMessage

  • Buat antrian polling panjang menggunakan. CreateQueue

Semua kode contoh untuk AWS SDK for PHP tersedia di sini GitHub.

Kredensial

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. Kredensial Kemudian imporAWS SDK for PHP, seperti yang dijelaskan dalamPenggunaan dasar.

Tetapkan atribut pada antrian untuk mengaktifkan polling panjang

Impor

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

Kode Sampel

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

Ambil pesan dengan polling panjang

Impor

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

Kode Sampel

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

Buat antrian dengan polling panjang

Impor

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

Kode Sampel

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