Entrega 'pelo menos uma vez' e consumidores idempotentes
Pergunta
Filas de mensagem normalmente garantem entrega 'at least once'. O que isso implica pro código do consumidor?
Resposta esperada
'At least once' significa que uma mensagem pode ser entregue mais de uma vez — por retry após falha de ack, por rebalanceamento de partição, por timeout de visibilidade. O consumidor NÃO pode assumir que processa cada mensagem exatamente uma vez. Implicação: o processamento tem que ser idempotente — reaplicar a mesma mensagem não deve mudar o resultado. Técnicas: chave de deduplicação (guardar ids de mensagens já processadas, com TTL, e ignorar repetição); operações naturalmente idempotentes (`set status = 'pago'` em vez de `saldo += valor`); ou um outbox/inbox transacional que amarra o processamento e o registro do id numa transação. 'Exactly once' de ponta a ponta é caro e frequentemente é, na prática, 'at least once + consumidor idempotente'.
Por que perguntam isso
Pergunta pleno/sênior. Conecta com Idempotency-Key das APIs. Sinal de experiência: 'exactly once é at least once + consumidor idempotente'.