Ingestão de dados via filas de mensagens e duplicidade
Gabarito: letra C. Em um cenário com política de entrega "pelo menos uma vez", o recebimento de mensagens duplicadas é inevitável. A única forma de garantir que o processamento não gere efeitos duplicados no resultado final é projetar o consumidor de forma idempotente, ou seja, processar a mesma mensagem múltiplas vezes produz o mesmo efeito que uma única execução. As demais alternativas ou não eliminam duplicatas ou introduzem outros problemas.
A banca testa o conhecimento sobre padrões de processamento em sistemas de mensageria, especialmente a diferença entre políticas de entrega e a importância da idempotência para garantir consistência.
Alternativa A — ❌ Incorreta
Assumir entrega FIFO (First-In, First-Out) garante a ordem das mensagens, mas não resolve o problema de duplicidade gerado pela política "pelo menos uma vez". Mesmo em filas FIFO, se a entrega for "pelo menos uma vez", duplicatas podem ocorrer.
Alternativa B — ❌ Incorreta
Descartar mensagens não confirmadas no primeiro recebimento não é uma estratégia viável. O sistema não tem como distinguir uma mensagem duplicada de uma nova, e descartar mensagens não confirmadas pode levar à perda de dados legítimos.
Alternativa C — ✅ Correta ⟵ GABARITO
Projetar o processamento do consumidor de forma idempotente significa que, mesmo que a mesma mensagem seja recebida múltiplas vezes, o efeito no estado final será o mesmo. Por exemplo, uma operação de "inserir se não existir" ou "atualizar com base em chave" garante idempotência. Essa é a medida mais adequada para lidar com duplicatas em sistemas com entrega "pelo menos uma vez".
Alternativa D — ❌ Incorreta
Aumentar o número de consumidores pode aumentar a taxa de processamento, mas não evita duplicatas. Pelo contrário, com múltiplos consumidores concorrentes, pode até agravar o problema se não houver controle de concorrência.
Alternativa E — ❌ Incorreta
Aplicar uma janela para reordenar eventos por timestamp pode corrigir a ordenação, mas não elimina duplicatas. Mensagens duplicadas continuariam a aparecer na janela e seriam processadas novamente, a menos que a lógica de processamento também seja idempotente.
Gabarito: letra C.