O silêncio não prova que nada aconteceu

Imagine que uma aplicação envia uma encomenda, o servidor a grava e a resposta se perde na rede. O cliente vê um erro e tenta novamente. Se cada tentativa criar uma encomenda, uma falha de comunicação transforma-se num problema de negócio. É por isso que «repetir até funcionar» não é uma estratégia suficiente.

Um timeout limita quanto tempo o chamador espera; não desfaz automaticamente aquilo que o serviço remoto já executou. A interface deve conseguir distinguir falha confirmada de resultado ainda desconhecido. Quando necessário, permita consultar o estado da operação antes de criar outra.

Dê identidade à operação

Uma chave de idempotência identifica a mesma intenção ao longo das tentativas. O servidor precisa de guardar e reconhecer essa chave, associando-a ao resultado. Gerar uma chave diferente em cada repetição perde o propósito. O tratamento de pedidos simultâneos também precisa de impedir que duas execuções sejam aceites como novas.

Isto não significa ignorar diferenças. Reutilizar a mesma chave com um valor ou destinatário diferente deve ser tratado explicitamente pela API. Defina ainda a duração de retenção da chave e o comportamento depois desse período. A garantia depende do contrato e da implementação, não do nome do cabeçalho.

Repetir menos pode recuperar melhor

Para falhas transitórias, use tentativas limitadas e intervalos crescentes. Uma variação aleatória, chamada jitter, evita que todos regressem exactamente ao mesmo tempo. Não aplique a mesma lógica a uma credencial inválida ou a dados rejeitados: esperar raramente corrige esses problemas. Respeite as orientações e limites do serviço chamado.

Observe também as camadas: se a aplicação, a biblioteca e o serviço intermédio repetem sem coordenação, um pedido pode multiplicar a carga. Escolha onde controlar as tentativas e acompanhe resultados desconhecidos. A mensagem ao utilizador deve explicar o próximo passo possível, sem prometer que a operação falhou quando ainda não sabe.

Teste a resposta que nunca chega

Num ambiente de testes, simule uma resposta perdida depois de gravar uma operação. Repita o pedido com a mesma chave e confirme que existe apenas um resultado. Depois teste duas tentativas simultâneas e uma chave reutilizada com dados diferentes. Documente o comportamento esperado antes de testar; sucesso é preservar a intenção do utilizador.

Fontes & leitura complementar

Fontes consultadas em 24 de Outubro de 2026. Os exemplos numéricos e cenários apresentados são ilustrativos.

Vamos pôr este conhecimento em prática?

Podemos trabalhar juntos no desafio da sua equipa ou no seu próximo projecto.

Falar com Calembe ↗