AWS SDK for PHP 버전 3을 사용하는 Amazon SQS에서 긴 폴링 활성화 - AWS SDK for PHP

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS SDK for PHP 버전 3을 사용하는 Amazon SQS에서 긴 폴링 활성화

긴 폴링은 응답을 전송하기 전에 대기열에서 메시지를 사용할 수 있을 때까지 Amazon SQS를 지정된 시간 동안 대기시켜 빈 응답의 개수를 줄입니다. 또한, 긴 폴링은 서버의 샘플링 대신에 모든 서버를 쿼리하여 False인 빈 응답을 제거합니다. 긴 폴링을 활성화하려면 수신된 메시지에 0이 아닌 대기 시간을 지정합니다. 자세한 내용은 SQS 긴 폴링을 참조하세요.

다음 예제에서는 다음과 같은 작업을 하는 방법을 보여줍니다.

  • 를 사용하여 긴 폴링을 활성화하려면 Amazon SQS 대기열에 속성을 설정합니다. SetQueueAttributes

  • 를 사용하여 폴링이 긴 메시지를 하나 이상 검색합니다. ReceiveMessage

  • 를 사용하여 긴 폴링 대기열을 생성합니다. CreateQueue

의 모든 예제 코드는 여기에서 확인할 GitHub 수 있습니다. AWS SDK for PHP

보안 인증 정보

예제 코드를 실행하기 전에 보안 인증에 설명된 대로 AWS 보안 인증을 구성합니다. 그 다음 기본 사용법에 설명된 대로 AWS SDK for PHP를 가져옵니다.

긴 폴링을 활성화하기 위한 대기열의 속성 설정

가져오기

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

샘플 코드

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

긴 폴링이 있는 메시지 검색

가져오기

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

샘플 코드

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

긴 폴링이 있는 대기열 생성

가져오기

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

샘플 코드

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