Trabajo con colas de mensajes de Amazon SQS - AWS SDK para C++

Trabajo con colas de mensajes de Amazon SQS

Una cola de mensajes es el contenedor lógico utilizado para enviar mensajes de forma fiable en Amazon SQS. Existen dos tipos de colas: estándar y primero en entrar, primero en salir (FIFO). Para obtener más información sobre las colas y las diferencias entre estos tipos, consulte la Guía para desarrolladores de Amazon Simple Queue Service.

Estos ejemplos de C++ muestran cómo utilizar el AWS SDK para C++ para crear, enumerar, eliminar y obtener la URL de una cola de Amazon SQS.

Requisitos previos

Antes de comenzar, le recomendamos que lea Primeros pasos con el AWS SDK para C++.

Descargue el código de ejemplo y compile la solución tal y como se describe en Introducción a los ejemplos de código.

Para ejecutar los ejemplos, el perfil de usuario que su código utilice para realizar las solicitudes debe tener los permisos adecuados en AWS (para el servicio y la acción). Para obtener más información, consulte Proporcionar credenciales de AWS.

Creación de una cola

Use el método CreateQueue de la clase SQSClient y proporciónele un objeto CreateQueueRequest que describa los parámetros de la cola.

Incluye

#include <aws/core/Aws.h> #include <aws/sqs/SQSClient.h> #include <aws/sqs/model/CreateQueueRequest.h> #include <iostream>

Código de

Aws::SQS::SQSClient sqsClient(clientConfiguration); Aws::SQS::Model::CreateQueueRequest request; request.SetQueueName(queueName); const Aws::SQS::Model::CreateQueueOutcome outcome = sqsClient.CreateQueue(request); if (outcome.IsSuccess()) { std::cout << "Successfully created queue " << queueName << " with a queue URL " << outcome.GetResult().GetQueueUrl() << "." << std::endl; } else { std::cerr << "Error creating queue " << queueName << ": " << outcome.GetError().GetMessage() << std::endl; }

Consulte el ejemplo completo

Mostrar colas

Para enumerar las colas de Amazon SQS de su cuenta, llame a la función miembro ListQueues de la clase SQSClient y transfiérale un objeto ListQueuesRequest.

Incluye

#include <aws/core/Aws.h> #include <aws/sqs/SQSClient.h> #include <aws/sqs/model/ListQueuesRequest.h> #include <iostream>

Código

Aws::SQS::SQSClient sqsClient(clientConfiguration); Aws::SQS::Model::ListQueuesRequest listQueuesRequest; Aws::String nextToken; // Used for pagination. Aws::Vector<Aws::String> allQueueUrls; do { if (!nextToken.empty()) { listQueuesRequest.SetNextToken(nextToken); } const Aws::SQS::Model::ListQueuesOutcome outcome = sqsClient.ListQueues( listQueuesRequest); if (outcome.IsSuccess()) { const Aws::Vector<Aws::String> &queueUrls = outcome.GetResult().GetQueueUrls(); allQueueUrls.insert(allQueueUrls.end(), queueUrls.begin(), queueUrls.end()); nextToken = outcome.GetResult().GetNextToken(); } else { std::cerr << "Error listing queues: " << outcome.GetError().GetMessage() << std::endl; return false; } } while (!nextToken.empty()); std::cout << allQueueUrls.size() << " Amazon SQS queue(s) found." << std::endl; for (const auto &iter: allQueueUrls) { std::cout << " " << iter << std::endl; }

Consulte el ejemplo completo

Cómo obtener la URL de la cola

Para obtener la URL de una cola de Amazon SQS existente, llame a la función miembro GetQueueUrl de la clase SQSClient.

Incluye

#include <aws/core/Aws.h> #include <aws/sqs/SQSClient.h> #include <aws/sqs/model/GetQueueUrlRequest.h> #include <iostream>

Código

Aws::SQS::SQSClient sqsClient(clientConfiguration); Aws::SQS::Model::GetQueueUrlRequest request; request.SetQueueName(queueName); const Aws::SQS::Model::GetQueueUrlOutcome outcome = sqsClient.GetQueueUrl(request); if (outcome.IsSuccess()) { std::cout << "Queue " << queueName << " has url " << outcome.GetResult().GetQueueUrl() << std::endl; } else { std::cerr << "Error getting url for queue " << queueName << ": " << outcome.GetError().GetMessage() << std::endl; }

Consulte el ejemplo completo

Eliminar una cola

Proporcione la URL a la función miembro DeleteQueue de la clase SQSClient.

Incluye

#include <aws/core/Aws.h> #include <aws/core/client/DefaultRetryStrategy.h> #include <aws/sqs/SQSClient.h> #include <aws/sqs/model/DeleteQueueRequest.h> #include <iostream>

Code

Aws::SQS::Model::DeleteQueueRequest request; request.SetQueueUrl(queueURL); const Aws::SQS::Model::DeleteQueueOutcome outcome = sqsClient.DeleteQueue(request); if (outcome.IsSuccess()) { std::cout << "Successfully deleted queue with url " << queueURL << std::endl; } else { std::cerr << "Error deleting queue " << queueURL << ": " << outcome.GetError().GetMessage() << std::endl; }

Consulte el ejemplo completo

Más información