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
-
Usar filas de mensagens não entregues no Guia do desenvolvedor do Amazon Simple Queue Service.
-
SetQueueAttributes na Referência de API do Amazon Simple Queue Service.