← AWS Solutions Architect Professional: decisões complexas
11 / 16 · 75 MIN

Filas, repetição e recuperação

Desenha processamento assíncrono que conserva ordem, controla pressão e torna falhas recuperáveis.

Separar entrega de efeito de negócio

Desenha uma linha temporal com receção, efeito durável, confirmação e remoção da mensagem. Uma falha entre o efeito e a confirmação pode deixar o resultado feito e a mensagem disponível para repetição. O mapping SQS de Lambda processa pelo menos uma vez; o consumidor precisa de tolerar repetição. No exemplo fictício, uma ordem de reconciliação foi registada mas a função terminou antes de confirmar. Reprocessar não deve criar outra ordem. A deduplicação de envio em FIFO tem uma janela de cinco minutos; não é uma transação com um serviço de pagamentos externo. Define uma identidade estável para a operação de negócio, conserva o resultado e decide como tratar um resultado externo desconhecido. Um timeout não prova que a operação externa falhou. O runbook deve permitir consultar e reconciliar antes de reenviar uma ordem que possa já ter produzido efeito.

Tratar o lote e proteger a ordem

Por predefinição, uma falha no lote pode devolver também mensagens já processadas. Com ReportBatchItemFailures configurado e uma resposta válida, o handler identifica as falhas individuais. Uma exceção não tratada continua a representar falha do lote inteiro. Num exercício FIFO, as ordens F-21, F-22 e F-23 pertencem ao mesmo grupo. F-21 terminou; F-22 falhou; F-23 ainda não foi processada. Interrompe esse percurso e devolve F-22 e F-23 como falhada e não processada, respetivamente. Não declares F-23 concluída para libertar a fila. O grupo deve corresponder ao domínio que exige ordem, por exemplo uma carteira. Colocar todas as carteiras num único grupo pode serializar trabalho independente; usar um grupo aleatório por mensagem pode destruir a ordem exigida dentro da carteira. Documenta a escolha com os requisitos de negócio.

Tempo disponível e pressão nas dependências

Para Lambda com fila standard e batch window, a recomendação consultada é visibility timeout de pelo menos seis vezes o timeout da função, mais a janela. Com 35 segundos e janela de cinco, a referência é 215 segundos. Isto é uma recomendação operacional, não uma promessa de conclusão nem o limite mínimo validado pelo serviço; o timeout da função não pode exceder a visibilidade. Em consumidores próprios, uma extensão de visibilidade deve acompanhar progresso real. Ajusta concorrência à capacidade da dependência. Em FIFO com três grupos ativos e máximo oito, o limite de grupos restringe as invocações concorrentes a três, antes de outros limites. Em mappings sem provisioned mode, soma os máximos das filas que partilham a mesma função e compara com a reserved concurrency. Aumentar consumidores sem avaliar a base de dados pode apenas aumentar timeouts e repetições.

Recuperar sem apagar a evidência da falha

Uma DLQ isola mensagens que precisam de análise; não corrige o payload nem confirma o efeito de negócio. Conserva motivo, identidade, tentativas e autorização para redrive. Em FIFO, retirar uma mensagem para a DLQ pode permitir que posteriores avancem, quebrando a sequência de operações esperada pela aplicação. O owner deve decidir como suspender ou reconciliar esse grupo. Numa fila standard, a expiração na DLQ continua ligada ao envio original. Se a retenção da DLQ for 72 horas e a mensagem já tiver 30, restam aproximadamente 42, sem nova alteração. Não confundas a idade desde entrada na DLQ com a idade total. No handover, combina backlog, trabalho em voo, mensagens isoladas e resultados reconciliados. O critério de conclusão é o resultado de negócio observado, não apenas uma fila principal vazia.

Original FIFO worksheet; not a deployable handler
Group = portfolio-17
F-21: durable completion
F-22: processing failure
F-23: unprocessed
ReportBatchItemFailures enabled
Return failures: F-22, F-23
Do not execute F-23 ahead of unresolved F-22
NA PRÁTICA

A ordem R-804 tem resultado externo desconhecido após timeout. APS conserva a identidade e consulta o resultado antes de autorizar uma nova tentativa.

Armadilhas comuns

Confundir FIFO com atomicidade externa; devolver sucesso para trabalho não feito; aumentar concorrência contra uma dependência saturada; tratar DLQ como arquivo resolvido.

Tópicos relacionados: Consistência, transações e regiões

Leva esta ideia contigo

A repetição deve preservar o resultado de negócio; ordem, tempo e recuperação precisam de decisões explícitas.

Criar conta

Referência: Using Lambda with Amazon SQS · SAP-C02

AWS é uma marca comercial da Amazon.com, Inc. ou das suas afiliadas. A dr.pt é uma plataforma de preparação independente e não está afiliada, associada, patrocinada, autorizada nem aprovada por AWS. Os conteúdos e as perguntas são originais, não são perguntas oficiais de exame, e concluir os nossos testes não atribui nem garante qualquer certificação. Os nomes são usados apenas para identificar o tema. Todas as outras marcas pertencem aos respetivos titulares.