Usar dead letter queues no Amazon SQS - AWS SDK para C++

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usar dead letter queues no Amazon SQS

O Amazon SQS comporta filas de mensagens não entregues. Fila de mensagens não entregues é uma fila para a qual outras filas podem enviar as mensagens que não são processadas com êxito. Você pode separar e isolar essas mensagens na dead letter queue para determinar por que o processamento não teve sucesso.

Para criar uma fila de mensagens não entregues, é necessário criar primeiro uma política de redirecionamento e definir a política nos atributos da fila.

Importante

Uma fila de mensagens não entregues deve ter o mesmo tipo de fila (FIFO ou padrão) da fila de origem. Ela também deve ser criada com a mesma Conta da AWS e Região da AWS que a fila de origem.

Pré-requisitos

Antes de começar, recomendamos que você leia Getting started using the AWS SDK para C++.

Baixe o exemplo código de código e crie a solução conforme descrito em Conceitos básicos dos exemplos de código.

Para executar os exemplos, o perfil de usuário que seu código usa para fazer as solicitações deve ter as permissões adequadas na AWS (para o serviço e a ação). Para acessar mais informações, consulte Fornecer credenciais da AWS.

Criar uma política de redirecionamento

Uma política de redirecionamento é especificada em JSON. Para criá-la, você pode usar a classe de utilitário JSON fornecida com o AWS SDK para C++.

Veja um exemplo de função que cria uma política de redirecionamento fornecendo a ela o ARN da fila de mensagens não entregues, além do número máximo de vezes em que a mensagem pode ser recebida e não processada antes ser enviada à fila de mensagens não entregues.

Inclui

#include <aws/core/Aws.h> #include <aws/core/utils/json/JsonSerializer.h>

Código da

Aws::String MakeRedrivePolicy(const Aws::String &queueArn, int maxReceiveCount) { Aws::Utils::Json::JsonValue redrive_arn_entry; redrive_arn_entry.AsString(queueArn); Aws::Utils::Json::JsonValue max_msg_entry; max_msg_entry.AsInteger(maxReceiveCount); Aws::Utils::Json::JsonValue policy_map; policy_map.WithObject("deadLetterTargetArn", redrive_arn_entry); policy_map.WithObject("maxReceiveCount", max_msg_entry); return policy_map.View().WriteReadable(); }

Consulte o exemplo completo.

Definir a política de redirecionamento em sua fila de origem

Para configurar sua fila de mensagens não entregues, chame a função de membro SetQueueAttributes da classe do SQSClient com um objeto SetQueueAttributesRequest para o qual você definiu o atributo RedrivePolicy com a política de redirecionamento JSON.

Inclui

#include <aws/sqs/SQSClient.h> #include <aws/sqs/model/SetQueueAttributesRequest.h> #include <iostream>

Código da

Aws::SQS::Model::SetQueueAttributesRequest request; request.SetQueueUrl(srcQueueUrl); request.AddAttributes( Aws::SQS::Model::QueueAttributeName::RedrivePolicy, redrivePolicy); const Aws::SQS::Model::SetQueueAttributesOutcome outcome = sqsClient.SetQueueAttributes(request); if (outcome.IsSuccess()) { std::cout << "Successfully set dead letter queue for queue " << srcQueueUrl << " to " << deadLetterQueueARN << std::endl; } else { std::cerr << "Error setting dead letter queue for queue " << srcQueueUrl << ": " << outcome.GetError().GetMessage() << std::endl; }

Consulte o exemplo completo.

Mais informações