trilha

Tecnologias/03 - Filas/03 - Amazon SQS2 min

Standard, FIFO e Deduplicação no SQS

Tipos de fila

Aspecto Standard FIFO
Ordem Melhor esforço; pode haver mensagens fora de ordem Preservada dentro de cada grupo
Duplicidade A entrega pode se repetir Deduplica publicações dentro da janela definida
Paralelismo Consumidores podem dividir mensagens independentes Grupos diferentes permitem progresso independente
Nome Sem exigência de sufixo FIFO Termina em .fifo

Standard oferece entrega pelo menos uma vez. O consumidor precisa aceitar reentregas e, quando necessário, tratar eventos fora de ordem. Referência: Standard.

Grupos no FIFO

MessageGroupId identifica um conjunto ordenado de mensagens. Usar o pedido como grupo permite manter a sequência daquele pedido e processar outros pedidos em paralelo.

Grupo pedido-42: criado → pago → enviado
Grupo pedido-73: criado → cancelado

A ordenação é por grupo, sem ordem global entre os dois. Se um lote recebido contiver várias mensagens do mesmo grupo, a aplicação precisa respeitar a sequência ao executar seus efeitos. Concentrar tudo em um grupo reduz o paralelismo disponível. Referência: FIFO.

Deduplicação

MessageDeduplicationId permite identificar publicações repetidas dentro de uma janela de 5 minutos. Com deduplicação por conteúdo habilitada, o serviço pode gerar o identificador a partir do corpo; atributos da mensagem não participam desse cálculo.

Dois eventos distintos não devem receber o mesmo identificador nessa janela. Uma repetição depois da janela também não tem a mesma proteção. Referência: deduplicação FIFO.

Limite da garantia

Deduplicar publicações não torna atômicos o efeito no banco e a exclusão na fila. Se o consumidor gravar o resultado e cair antes de excluir a mensagem, ela poderá voltar após o timeout. Idempotência impede que essa repetição duplique o efeito. Veja 3. Visibility Timeout e Exclusão no SQS.

As cotas de throughput FIFO dependem do modo, dos lotes, das partições e da região; um valor único de mensagens por segundo não descreve todas as configurações. Referência: cotas.

Aprofundamento aplicado

Escolher a menor fronteira que precisa de ordem

Se a sequência importa por pedido, usar pedidoId como grupo permite paralelismo entre pedidos. Usar um único grupo para todos serializa trabalho desnecessariamente. Usar um grupo por mensagem elimina a sequência entre mensagens relacionadas.

Cenário: criado → pago → enviado de um pedido não deve aplicar enviado antes de pago. A fila preserva a ordem do grupo na entrega conforme suas regras, mas um handler que executa itens do mesmo grupo em paralelo pode inverter a conclusão.

Deduplicação e replay

A janela de deduplicação FIFO é finita. O registro de idempotência de negócio deve cobrir quanto tempo mensagens podem voltar por falha, redrive ou replay. A escolha da chave precisa distinguir uma nova transição de outra tentativa da mesma transição. Referência: deduplicação FIFO.

Exercício: crie dois pedidos com três eventos cada. Resultado esperado: processar os pedidos em paralelo e os eventos de cada pedido em sequência, incluindo uma falha no segundo evento de um dos grupos.

Relacionado: Idempotent Operations · 4. Retry, DLQ e Lambda com SQS.


Parte de Amazon SQS

Buscar

Busca por título, seção e texto das notas