ADR-011 — Deduplicação e ordering da fila AWS_SQS_CART_RECOMMENDATION_HISTORY_FIFO seguem o padrão AllLogs
Status: Aceito
Data: 2026-06-11
Contexto: Task #196020 — Criar fila SQS FIFO para centralizar eventos de histórico de upsell
A fila AWS_SQS_CART_RECOMMENDATION_HISTORY_FIFO replica o padrão de deduplicação e ordering já consolidado no LogQueueConsumerService (AllLogs de Payments):
MessageGroupId:Guid.NewGuid()por mensagem (padrão doSendFifoAsyncno submodule) — sem ordering entre eventos do mesmoRecommendationsId. Justificativa: oTimestampdo evento (Event.Timestamp, populado no publish) garante a fidelidade temporal da tabelaCartRecommendationsHistory, que é append-only e não possui dependências entre linhas.MessageDeduplicationId: não setado — deduplicação fica a cargo da camada de aplicação (INSERT idempotente), mesmo padrão do AllLogs.ContentBasedDeduplication:false— mesmo padrão do AllLogs.- DLQ: fora de escopo desta task — será tratada em task futura se necessário.
Opções consideradas
| Decisão | Alternativa rejeitada | Motivo da rejeição |
|---|---|---|
MessageGroupId = Guid.NewGuid() | MessageGroupId = RecommendationsId | Exigiria alteração do submodule (SendFifoAsync com overload); o ordering por RecommendationsId não traz integridade adicional pois a tabela é append-only com timestamp do evento |
| Sem deduplicação SQS | ContentBasedDeduplication = true | createdAt no payload muda a cada publish — invalidaria a dedup; proteção na aplicação é o padrão consolidado |
| Sem DLQ | DLQ nesta task | Complexidade desnecessária no escopo atual; padrão de DLQ já existe para outras FIFOs e pode ser adicionado posteriormente |