

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Ejemplos de Amazon SQS con la versión 3 de AWS SDK para PHP
<a name="sqs-examples"></a>

Amazon Simple Queue Service (SQS) es un servicio de colas de mensajes rápido, de confianza, escalable y totalmente administrado. Amazon SQS permite desacoplar componentes de una aplicación en la nube. Amazon SQS incluye colas estándar con un alto rendimiento y procesamiento al menos una vez, y colas FIFO que ofrecen distribución FIFO (primero en entrar, (primero en entrar, primero en salir) primero en salir) y procesamiento exactamente una vez.

Todo el código de ejemplo de la versión 3 de AWS SDK para PHP está disponible [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

**Topics**
+ [Habilitación del sondeo largo](sqs-examples-enable-long-polling.md)
+ [Administración del tiempo de espera de visibilidad](sqs-examples-managing-visibility-timeout.md)
+ [Envío y recepción de mensajes](sqs-examples-send-receive-messages.md)
+ [Uso de colas de mensajes fallidos de](sqs-examples-dead-letter-queues.md)
+ [Uso de colas](sqs-examples-using-queues.md)

# Habilitación del sondeo largo en Amazon SQS con la versión 3 de AWS SDK para PHP
<a name="sqs-examples-enable-long-polling"></a>

El sondeo largo reduce el número de respuestas vacías al permitir que Amazon SQS espere un tiempo determinado a que haya un mensaje disponible en la cola antes de enviar una respuesta. Asimismo, el sondeo largo elimina las respuestas vacías falsas, ya que consulta todos los servidores en lugar de solo una muestra de servidores. Para habilitar el sondeo largo, especifique un tiempo de espera diferente de cero para los mensajes recibidos. Para obtener más información, consulte [Sondeo largo de Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-long-polling.html).

Los siguientes ejemplos muestran cómo:
+ Establecer atributos en una cola de Amazon SQS para habilitar el sondeo largo utilizando [SetQueueAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#setqueueattributes).
+ Recuperar uno o varios mensajes con sondeo largo utilizando [ReceiveMessage](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#receivemessage).
+ Crear una cola de sondeo largo utilizando [CreateQueue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#createqueue).

Todo el código de ejemplo de AWS SDK para PHP está disponible [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenciales
<a name="examplecredentials"></a>

Antes de ejecutar el código de ejemplo, configure sus credenciales de AWS, como se indica en [Autenticación AWS con la AWS SDK para PHP versión 3](credentials.md). A continuación, importe AWS SDK para PHP, como se indica en [Instalación de la AWS SDK para PHP versión 3](getting-started_installation.md).

## Establecer atributos en una cola para habilitar el sondeo largo
<a name="set-attributes-on-a-queue-to-enable-long-polling"></a>

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Código de muestra** 

```
$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 mensajes con el sondeo largo
<a name="retrieve-messages-with-long-polling"></a>

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Código de muestra** 

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

## Crear una cola con el sondeo largo
<a name="create-a-queue-with-long-polling"></a>

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Código de muestra** 

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

# Administración del tiempo de espera de visibilidad en Amazon SQS con la versión 3 de AWS SDK para PHP
<a name="sqs-examples-managing-visibility-timeout"></a>

Un tiempo de espera de visibilidad es un intervalo durante el cual Amazon SQS impide que otros componentes consumidores reciban y procesen un mensaje. Para obtener más información, consulte [Tiempo de espera de visibilidad](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html).

El siguiente ejemplo muestra cómo:
+ Para cambiar el tiempo de espera de visibilidad de mensajes determinados en una cola definiendo nuevos valores, use [ChangeMessageVisibilityBatch](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#changemessagevisibilitybatch).

Todo el código de ejemplo de AWS SDK para PHP está disponible [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenciales
<a name="examplecredentials"></a>

Antes de ejecutar el código de ejemplo, configure sus credenciales de AWS, como se indica en [Autenticación AWS con la AWS SDK para PHP versión 3](credentials.md). A continuación, importe AWS SDK para PHP, como se indica en [Instalación de la AWS SDK para PHP versión 3](getting-started_installation.md).

## Cambiar el tiempo de espera de visibilidad de varios mensajes
<a name="change-the-visibility-timeout-of-multiple-messages"></a>

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Código de muestra** 

```
$queueUrl = "QUEUE_URL";

$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->receiveMessage(array(
        'AttributeNames' => ['SentTimestamp'],
        'MaxNumberOfMessages' => 10,
        'MessageAttributeNames' => ['All'],
        'QueueUrl' => $queueUrl, // REQUIRED
    ));
    $messages = $result->get('Messages');
    if ($messages != null) {
        $entries = array();
        for ($i = 0; $i < count($messages); $i++) {
            $entries[] = [
                'Id' => 'unique_is_msg' . $i, // REQUIRED
                'ReceiptHandle' => $messages[$i]['ReceiptHandle'], // REQUIRED
                'VisibilityTimeout' => 3600
            ];
        }
        $result = $client->changeMessageVisibilityBatch([
            'Entries' => $entries,
            'QueueUrl' => $queueUrl
        ]);

        var_dump($result);
    } else {
        echo "No messages in queue \n";
    }
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Envío y recepción de mensajes en Amazon SQS con la versión 3 de AWS SDK para PHP
<a name="sqs-examples-send-receive-messages"></a>

Para obtener información sobre los mensajes de Amazon SQS, consulte [Envío de un mensaje a una cola de SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-send-message.html) y [ecepción y eliminación de un mensaje de una cola de SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-receive-delete-message.html.html) en la Guía del usuario de Service Quotas.

Los siguientes ejemplos muestran cómo:
+ Entregar un mensaje en una cola especificada con [SendMessage](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#sendmessage).
+ Recuperar uno o varios mensajes (hasta 10) de una cola especificada con [ReceiveMessage](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#receivemessage).
+ Eliminar un mensaje de una cola con [DeleteMessage](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#deletemessage).

Todo el código de ejemplo de AWS SDK para PHP está disponible [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenciales
<a name="examplecredentials"></a>

Antes de ejecutar el código de ejemplo, configure sus credenciales de AWS, como se indica en [Autenticación AWS con la AWS SDK para PHP versión 3](credentials.md). A continuación, importe AWS SDK para PHP, como se indica en [Instalación de la AWS SDK para PHP versión 3](getting-started_installation.md).

## Enviar un mensaje
<a name="send-a-message"></a>

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Código de muestra** 

```
$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

$params = [
    'DelaySeconds' => 10,
    'MessageAttributes' => [
        "Title" => [
            'DataType' => "String",
            'StringValue' => "The Hitchhiker's Guide to the Galaxy"
        ],
        "Author" => [
            'DataType' => "String",
            'StringValue' => "Douglas Adams."
        ],
        "WeeksOn" => [
            'DataType' => "Number",
            'StringValue' => "6"
        ]
    ],
    'MessageBody' => "Information about current NY Times fiction bestseller for week of 12/11/2016.",
    'QueueUrl' => 'QUEUE_URL'
];

try {
    $result = $client->sendMessage($params);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Recibir y eliminar mensajes
<a name="receive-and-delete-messages"></a>

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Código de muestra** 

```
$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' => 0,
    ]);
    if (!empty($result->get('Messages'))) {
        var_dump($result->get('Messages')[0]);
        $result = $client->deleteMessage([
            'QueueUrl' => $queueUrl, // REQUIRED
            'ReceiptHandle' => $result->get('Messages')[0]['ReceiptHandle'] // REQUIRED
        ]);
    } else {
        echo "No messages in queue. \n";
    }
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Uso de colas de mensajes fallidos en Amazon SQS con la versión 3 de AWS SDK para PHP
<a name="sqs-examples-dead-letter-queues"></a>

Una cola de mensajes fallidos es una cola a la que otras colas (de origen) pueden enviar mensajes que no se han podido procesar correctamente. Puede apartar y aislar estos mensajes en la cola de mensajes fallidos para determinar por qué no se procesaron correctamente. Debe configurar individualmente cada cola de origen que envía mensajes a una cola de mensajes fallidos. Varias colas pueden dirigirse a una única cola de mensajes fallidos.

Para obtener más información, consulte [Uso de colas de mensajes fallidos de SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html).

El siguiente ejemplo muestra cómo:
+ Habilitar una cola de mensajes fallidos utilizando [SetQueueAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#setqueueattributes).

Todo el código de ejemplo de AWS SDK para PHP está disponible [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenciales
<a name="examplecredentials"></a>

Antes de ejecutar el código de ejemplo, configure sus credenciales de AWS, como se indica en [Autenticación AWS con la AWS SDK para PHP versión 3](credentials.md). A continuación, importe AWS SDK para PHP, como se indica en [Instalación de la AWS SDK para PHP versión 3](getting-started_installation.md).

## Habilitar una cola de mensajes fallidos
<a name="enable-a-dead-letter-queue"></a>

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Código de muestra** 

```
$queueUrl = "QUEUE_URL";

$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->setQueueAttributes([
        'Attributes' => [
            'RedrivePolicy' => "{\"deadLetterTargetArn\":\"DEAD_LETTER_QUEUE_ARN\",\"maxReceiveCount\":\"10\"}"
        ],
        'QueueUrl' => $queueUrl // REQUIRED
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Uso de colas en Amazon SQS con la versión 3 de AWS SDK para PHP
<a name="sqs-examples-using-queues"></a>

Para obtener más información sobre las colas de Amazon SQS [Funcionamiento de colas SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-how-it-works.html).

Los siguientes ejemplos muestran cómo:
+ Devolver una lista de sus colas utilizando [ListQueues](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#listqueues).
+ Crear una nueva cola utilizando [CreateQueue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#createqueue).
+ Devolver la URL de una cola existente utilizando [GetQueueUrl](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#getqueueurl).
+ Eliminar una cola especificada utilizando [DeleteQueue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#deletequeue).

Todo el código de ejemplo de AWS SDK para PHP está disponible [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenciales
<a name="examplecredentials"></a>

Antes de ejecutar el código de ejemplo, configure sus credenciales de AWS, como se indica en [Autenticación AWS con la AWS SDK para PHP versión 3](credentials.md). A continuación, importe AWS SDK para PHP, como se indica en [Instalación de la AWS SDK para PHP versión 3](getting-started_installation.md).

## Devolver una lista de colas
<a name="return-a-list-of-queues"></a>

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Código de muestra** 

```
$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->listQueues();
    foreach ($result->get('QueueUrls') as $queueUrl) {
        echo "$queueUrl\n";
    }
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Creación de una cola
<a name="create-a-queue"></a>

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Código de muestra** 

```
$queueName = "SQS_QUEUE_NAME";

$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->createQueue([
        'QueueName' => $queueName,
        'Attributes' => [
            'DelaySeconds' => 5,
            'MaximumMessageSize' => 4096, // 4 KB
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Devolver la URL de una cola
<a name="return-the-url-of-a-queue"></a>

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Código de muestra** 

```
$queueName = "SQS_QUEUE_NAME";

$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->getQueueUrl([
        'QueueName' => $queueName // REQUIRED
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Eliminar una cola
<a name="delete-a-queue"></a>

 **Importaciones** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Código de muestra** 

```
$queueUrl = "SQS_QUEUE_URL";

$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->deleteQueue([
        'QueueUrl' => $queueUrl // REQUIRED
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```