Skip to main content

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 do SendFifoAsync no submodule) — sem ordering entre eventos do mesmo RecommendationsId. Justificativa: o Timestamp do evento (Event.Timestamp, populado no publish) garante a fidelidade temporal da tabela CartRecommendationsHistory, 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ãoAlternativa rejeitadaMotivo da rejeição
MessageGroupId = Guid.NewGuid()MessageGroupId = RecommendationsIdExigiria 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 SQSContentBasedDeduplication = truecreatedAt no payload muda a cada publish — invalidaria a dedup; proteção na aplicação é o padrão consolidado
Sem DLQDLQ nesta taskComplexidade desnecessária no escopo atual; padrão de DLQ já existe para outras FIFOs e pode ser adicionado posteriormente

Referências